Webpack:“存在多个模块,它们的名称仅在大小写上有所不同”,但所引用的模块是相同的

webpack Webpack

JinJin

2020-03-23

我正在使用webpack 3.8.1,并收到以下构建警告的多个实例:

WARNING in ./src/Components/NavBar/MainMenuItemMobile.js
There are multiple modules with names that only differ in casing.
This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
Use equal casing. Compare these module identifiers:
* /Users/path/to/babel-loader/lib/index.js!/Users/path/to/NavBar/MainMenuItemMobile.js
    Used by 1 module(s), i. e.
    /Users/path/to/babel-loader/lib/index.js!/Users/path/to/NavBar/ConstructedMainMenuItems.js
* /Users/path/to/babel-loader/lib/index.js!/Users/path/to/Navbar/MainMenuItemMobile.js
    Used by 1 module(s), i. e.
    /Users/path/to/babel-loader/lib/index.js!/Users/path/to/Navbar/ConstructedMainMenuItems.js
.....
(webpack)-hot-middleware/client.js ./src/index.js

令人困惑的是,引用的“两个”文件只是一个文件,目录中没有两个文件的名称只有大小写不同。

我还注意到,如果受这些警告的影响,我的热重装器通常不会拾取对文件的更改。

是什么导致此问题?

第3030篇《Webpack:“存在多个模块,它们的名称仅在大小写上有所不同”,但所引用的模块是相同的》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

12个回答
阿飞 2020.03.23

字母驱动器的大小写也很重要。就我而言,Windows 10在文件中具有大写字母“ C”,而我具有小写字母“ c”。

番长 2020.03.23

我也有同样的问题。我导航到目录Trade_v3,而实际目录为Trade_V3。更改目录后,不会引发此错误。

宝儿理查德 2020.03.23

就我而言(Win7,VSCode,Angular 6),即使我在所有地方都修复了错误的案例路径,问题仍然存在。看起来像webpack以某种方式缓存路径,因此要解决它:

  • 重命名导致问题的文件夹或文件不同
  • 建立
  • 有错误
  • 重命名
  • 建立
  • 成功
梅村村 2020.03.23

我遇到了同样的问题,我已经将我的react文件夹命名为UI,并且webpack生成的路径以某种方式使其变为小写形式。

因此,我将其重命名为ui,即小写而不是UI,这使我的交往立即进行。

谢谢。

null 2020.03.23

如果在Visual Studio代码和Gitbash中看到此消息,请转到设置,然后搜索C:\(大写C)并将Gitbash.exe的路径更改为c:\,它将消失。

2020.03.23

类似的问题,但我的问题是在中安装了软件包C:\Users\<username>\AppData\Local\Yarn删除该文件夹并重新添加全局软件包,我想解决此问题。

理查德卡卡西 2020.03.23

我有类似的错误,但与其他答案所描述的不完全相同。希望我的回答可以对某人有所帮助。

我正在导入两个组件的文件(Angular 7项目):

组件1:

LANGUAGES = require("../../models/LANGUAGES.json");

组件2:

LANGUAGES = require("../../models/LANGUAGES.JSON");

这是一个愚蠢的错误:这里的问题是我在同一个文件上使用两个不同的要求,这些文件使用不同的大写字母(它生成了警告)。

如何解决问题?使用相同的模型。

组件1:

LANGUAGES = require("../../models/LANGUAGES.json");

组件2:

LANGUAGES = require("../../models/LANGUAGES.json");

要么

组件1:

LANGUAGES = require("../../models/LANGUAGES.JSON");

组件2:

LANGUAGES = require("../../models/LANGUAGES.JSON");
斯丁 2020.03.23

如果您使用的是VS Code,并且您正在执行“ npm run dev ”,但是在VS Code中打开相应的项目文件夹则将发生3条警告

因此,解决方案是:首先打开相应的项目文件夹,然后仅执行“ npm run dev”

米亚 2020.03.23

我也有这个警告,但是我的问题是,例如,有React项目的文件目录:

**/src/containers/PageOne/index.js
**/src/containers/PageTWO/pageOneAction.js

**/src/containers/PageOne/index.js
**/src/containers/PageTWO/pageTWOAction.js

并且会有类似的警告。因为最好不要使用action.js排除相同的文件名(例如在那些文件夹中)index.js,否则在具有其他大小写语义的文件系统上编译时,这可能导致意外的行为。

要解决此警告,我们可以这样做:

**/src/containers/PageOne/index.js
**/src/containers/PageOne/pageOneAction.js

**/src/containers/PageTWO/index.js
**/src/containers/PageTWO/pageTWOAction.js

这是我的经验,希望能对某人有所帮助。

LGil 2020.03.23

我们在Windows上运行React,我的一位开发人员看到了这一点,但没有其他人遇到这个问题。

我看着他们打开VS Code到项目的子目录,然后cd对项目目录使用小写字母(而不是实际的大小写),然后运行npm start

您实际上可以在终端中以小写形式看到目录名称,c:\someproject\somedir但在Windows资源管理器中却是c:\SomeProject\SomeDir

我很惊讶Windows命令终端允许您执行此操作。

泡芙 2020.03.23

天哪,我终于找到了解决我的问题的方法。

我正在使用VS Code Terminal,并且在提示的路径中使用的是台式机而不是台式机

C:\Users\Hans\desktop\NODE JS\mysite>

要修复它,我只需要关闭项目文件夹并重新打开它:

File -> Close Folder
File -> Open Folder

现在,VS Code终端正在使用正确的提示路径。

JinJin 2020.03.23

对于其他遇到此问题并尝试过建议的修复程序但没有运气的人,这是另一种可能的解决方案。

确保您在终端中使用的路径具有正确的大小写。例如,如果您在Windows上使用git bash且您的项目具有以下路径:

C:\MyProjects\project-X

如果使用cd /c/myprojects/project-x(注意缺少大写字母)访问它然后运行,则npm start可能会遇到此问题。

解决方案是考虑项目路径区分大小写,并按以下方式使用它:

cd /C/MyProjects/project-X

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android