0

我在我的 prod 环境中的 webpack 中收到一个奇怪的错误,仅在 FF 上的以下行中。我试过 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 个模块的主包文件的内容为空,这意味着它必须在供应商包中。怀疑 main 和 vendor bundle 的加载速度可能会导致一些问题。

4

1 回答 1

1

自己想出了答案。

怀疑这是因为供应商捆绑包在主捆绑包之后加载。即使在 main 之前指定了供应商捆绑包,也有几个原因导致了这种情况。

  1. async获取捆绑包时,属性可能会导致竞争条件
  2. 除了async我们还预加载了主包

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

于 2018-01-17T09:04:06.923 回答