为什么 `import` 语句在 Webpack 4 中返回不同的实例?
Why are `import` statements giving back different instances in Webpack 4?
在 Webpack 1-3 中,我可以使用 import
并且无论我在哪里使用它,我收到的实例都与原始实例匹配。在 Webpack 4 中,如果文件位于不同的根目录中,import
似乎会 return 一个不同的实例。
- 文件 A:
/users/someone/projectA/file.js
- 文件 B1:
/users/someone/projectB/file1.js
- 文件 B2:
/users/someone/projectB/file2.js
在 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
相同。
在 Webpack 1-3 中,我可以使用 import
并且无论我在哪里使用它,我收到的实例都与原始实例匹配。在 Webpack 4 中,如果文件位于不同的根目录中,import
似乎会 return 一个不同的实例。
- 文件 A:
/users/someone/projectA/file.js
- 文件 B1:
/users/someone/projectB/file1.js
- 文件 B2:
/users/someone/projectB/file2.js
在 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
相同。