我目前正在尝试使用以下策略从相对于我的模块的路径动态加载 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
,所以我认为这不是 Webpack 的公共 API 的一部分。
我还注意到这webpackJsonp
是 3.12 中的一个函数和 4.28 中的一个Object
(继承自Array
),表明依赖webpackJsonp
.
是否有(面向未来的)可靠方法测试我的代码是否使用公共 API 作为 Webpack 包运行?
基本上,我应该用什么来代替typeof webpackJsonp !== "undefined"
,以达到相同的效果,但使用公共 API?
此外,我在让实际导入在 Webpack 4.28 中工作时也遇到了一些问题。请参阅Angular 7.2.3 + Webpack 4.28中的 import() 中断。