来自 webpack 的 modules[moduleId] 在 Firefox Quatum 58.0b16 中未定义



仅在FF上,我在生产环境中的webpack中收到一个奇怪的错误。我已经尝试过Chrome,Safari,没有任何问题。

function __webpack_require__(moduleId) {
    ...
    // Execute the module function
    modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
}

如果我在该行中断并重新加载页面,则不会发生问题,这导致我认为这是加载的文件上的某种竞争条件。

我有 4 个按以下顺序排列的 webpack 输出文件。

<script type="text/javascript" src="/manifest-4.e05278c43f895122ca44.js" async=""></script>
<script type="text/javascript" src="/vendor-2.e05278c43f895122ca44.js" async=""></script>
<script type="text/javascript" src="/main-0.e05278c43f895122ca44.js" async=""></script>
<script type="text/javascript" src="/bootstrap-3.e05278c43f895122ca44.js" async=""></script> 

我已经在Github和SO上查看了类似的问题,但我认为它们与我的问题没有直接关系。

[更新]

已将确切moduleId调试为 49。对于第 49 个模块,主捆绑包文件的内容为空,这意味着它必须位于供应商捆绑包中。怀疑主捆绑包和供应商捆绑包的加载速度可能会导致一些问题。

自己想出了答案。

怀疑这是因为供应商捆绑包在主捆绑包之后加载。尽管供应商捆绑包是在主要之前指定的,但有几个原因导致这种情况。

  1. async属性可能会导致获取捆绑包时出现争用条件
  2. 除了async我们还预装了主捆绑包

我们删除了它们,因为我们对它们没有任何用处。

最新更新