В настоящее время я экспериментирую со следующей стратегией для динамической загрузки файла json по пути относительно моего модуля:
- Если мой код упакован как пакет Webpack, используйте
import(filename.json)
- В любом другом случае вернитесь к вызову AJAX с абсолютным путем
Кажется, что работает следующее:
function parse (fileName, callback) {
var path = "./relative/path/to/" + fileName + ".json";
var cb = process.bind(this, fileName, callback);
if (typeof webpackJsonp !== "undefined") { // <-- Test if run as Webpack bundle
// Do dynamic import
} else {
// Do Ajax call
}
}
Однако я могуОднако не могу найти никакой документации по webpackJsonp
, поэтому я предполагаю, что это не является частью общедоступного API Webpack.
Я также заметил, что webpackJsonp
- это функция в 3.12 и Object
(унаследованная отArray
) в 4.28, указывающий на то, насколько хрупким является наличие, значение или тип webpackJsonp
.
Существует ли (надежный на будущее) способ проверки того, выполняется ли мой код какпакет Webpack, использующий общедоступный API?
По сути, чем заменить typeof webpackJsonp !== "undefined"
на тот же эффект, но с использованием общедоступного API?
Кроме того, у меня также есть некоторыепроблемы с получением реального импорта для работы в Webpack 4.28.Для этого смотрите import () breaks в Angular 7.2.3 + Webpack 4.28 .