golang - struct field has json tag but is not exported




Любой способ использовать веб-пакет для загрузки ресурса во время выполнения? (2)

У меня есть один файл .json, который содержит конфигурационные материалы, на которые я хотел бы сослаться из другого файла сценария, используя типичный синтаксис import / require. В настоящее время я использую webpack для разрешения этих зависимостей и связывания их для меня. Однако этот файл я хочу загрузить во время выполнения и надеялся, что может быть какой-то тип загрузчика, который может разрешить и загрузить этот файл для меня во время выполнения. До сих пор я не нашел ничего, что точно соответствует моим потребностям.

Пример:

var jQuery = require('jQuery');
var sol = require('some-other-lib');
var myConfig = require('/real/production/url/myconfig.json');

console.log(myConfig.myFavoriteSetting);

В приведенном выше примере я хотел бы, чтобы myconfig.json разрешен и загружен во время выполнения.

Возможно связанные вопросы:


С Webpack 2 вы можете использовать System.import. Он использует API Promise. AFAIK, в настоящее время нет способа запустить асинхронный / ожидающий код в браузере. Я полагаю, что Babel может переносить асинхронное / ожидающее только до ES2015, так что только последняя версия Node (v6.x) может запустить его. Я не думаю, что браузеры способны понять это, потому что переданный код использует генераторы.

Для System.import обратите внимание, что некоторые старые браузеры (я полагаю, IE 11 и ниже) требуют, чтобы вы заполнили API Promise. Проверьте polyfill.io для этого.

Если вы ДЕЙСТВИТЕЛЬНО хотите использовать async / await в браузере, вы можете сделать полное заполнение для ES2015.


У меня был такой же случай с файлом (config.json).

Я решил скопировать его с помощью Copy-Webpack-Plugin

new CopyWebpackPlugin([
    // Copy directory contents to {output}/
    { from: 'config.json' }
  ]) 

После этого мой файл находился в выходной директории сборки. Я использовал свойство 'externals' для ссылки на мой файл в моем файле webpack.config:

  externals: {
    'config': "require('./config.json')"
  }

В моем js-файле, который загружает config.json:

import config from 'config'

'config' load require ('./ config.json), которая находится в выходной директории сборки.

Я знаю, что это сложно, но я не нашел другого решения моей проблемы. Может быть, это кому-то поможет.

РЕДАКТИРОВАТЬ

Мне пришлось использовать веб-пакет для сборки, потому что import config from 'config' не был понятен без него. Вот почему я заменяю:

externals: {
    './config.json': "require('./config.json')"
  }

а также

var config = require('./config.json') //replace import config from 'config'

Без веб-пакета Javascript понимает var config = require('./config.json') потому что это правильный путь.

И когда я собираюсь с помощью веб-пакета, он изменяется по require('./config.json') когда видит './config.json', поэтому он работает





webpack