如何检测我的代码是否作为Webpack捆绑包执行

时间:2019-02-11 18:52:00

标签: javascript json webpack dynamic-import webpack-bundle

我目前正在尝试以下策略,从相对于模块的路径动态加载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中的函数,而Object(是从Array继承的)在4.28中表示依赖于状态,值或类型是多么脆弱。的webpackJsonp

是否有(可靠的)可靠方法测试使用公共API是否将我的代码作为Webpack捆绑软件运行?

基本上,我应该使用公共API替换typeof webpackJsonp !== "undefined",以达到相同的效果吗?

此外,在Webpack 4.28中使实际导入工作时,我也遇到了一些问题。参见import() breaks in Angular 7.2.3 + Webpack 4.28

0 个答案:

没有答案