4

我目前正在尝试使用以下策略从相对于我的模块的路径动态加载 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() 中断。

4

0 回答 0