Webpack multiple 需要解析到同一个文件但被导入两次

Posted

技术标签:

【中文标题】Webpack multiple 需要解析到同一个文件但被导入两次【英文标题】:Webpack multiple requires resolving to same file but being imported twice 【发布时间】:2014-10-19 23:51:50 【问题描述】:

您好,我刚刚在使用 webpack 时遇到了这个问题。如果我从一个文件中执行require('../something'),然后我在另一个文件中执行require('../../something'),它们最终都会解析为同一个文件。但是,如果您查看输出包,则会发现两个不同的 webpack 函数都具有相同的内容。我很确定我可以使用别名来解决这个问题,然后在两个文件中都执行require('something')。但这是正确的方法还是我错过了什么?

顺便说一句,我需要这个,因为它会导致 angularjs 未定义我的控制器时出现一些问题。

【问题讨论】:

好吧,直到我弄清楚别名是否是正确的使用方法。如果您为您的 javascript 的根目录创建一个别名,并为您的所有要求添加前缀。然后使用绝对路径而不是相对路径,您对文件的所有要求都变成了相同的路径,它解决了这个问题。 pastebin.com/R9jUAdTP 你能创建一个模拟 webpack 配置和文件吗? @BoopathiRajaa 也许如果你给我一个模板,但我有点忙。但是为您的基本目录创建别名并始终使用它而不是相对路径来修复它。这几个月来一直运行良好。 【参考方案1】:

您可以只使用 DedupePlugin。它会查找该模块是否已包含在您的构建中,如果是,则不再包含它。它易于设置,您不需要或安装任何额外的东西。

var webpack = require("webpack");

module.exports = 
    // more of your config
    // ...
    plugins: [
        new webpack.optimize.DedupePlugin()
    ]
;

【讨论】:

这不会阻止模块被评估两次。它只确保只存在一个代码副本(我试过了,其他人也确认了:github.com/webpack/webpack/issues/2134.

以上是关于Webpack multiple 需要解析到同一个文件但被导入两次的主要内容,如果未能解决你的问题,请参考以下文章

webpack之性能优化(webpack4)

Webpack 无法解析 Node.js 模块

使用 webpack 解析需要路径

Webpack 无法解析模块

二、webpack的loader配置

“你可能需要一个适合这种文件类型的加载器”,webpack 无法解析 angular2 文件