为什么 `import` 语句在 Webpack 4 中返回不同的实例?

Why are `import` statements giving back different instances in Webpack 4?

在 Webpack 1-3 中,我可以使用 import 并且无论我在哪里使用它,我收到的实例都与原始实例匹配。在 Webpack 4 中,如果文件位于不同的根目录中,import 似乎会 return 一个不同的实例。

在 Webpack 中,您可以使用别名,因此 projectA/ 看起来像是 ~A/projectB 中的 ~B/

我不知道这些别名是否重要,但是当它们与不同目录中的文件一起使用时,我可能会这样做:

// projectA/file.js
import B1 from '~B/file1'

还有这个:

// projectB/file2.js
import B1 from '~B/file1'

无论出于何种原因,B1 的实例在每个文件中都是不同的。在早期的 Webpack 版本中,这些是相同的。 Enzyme 等工具依赖于相同的引用。

Webpack 4 中是否有与每个实例相关的更改?

您需要将清单添加到您的 Webpack 配置中:

optimization: {
    runtimeChunk: {
        name: 'manifest',
    },
},

这将 link 增加您的入口点,以便它们都共享相同的导入引用;否则,Webpack 无法知道一个入口点中的 B1 与另一个入口点中的 B1 相同。