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

162

我正在使用 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

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

我还注意到,如果文件受这些警告影响,则我的热重新加载器经常无法捕获对文件的更改。

可能是什么原因导致了这个问题?


看看这个,它可能会解决你的问题 https://dev59.com/7broa4cB1Zd3GeqPfjJV - Sarthak Saklecha
40个回答

0

我在使用Next.js时遇到了同样的问题。在Next.js中,检查你是如何导入Link和Image的。在我的情况下,我导入Image时写成了 Image from "next/Image" 而不是正确的写法 Image from "next/image" 更新后,错误消失了。


0

如果有人在使用vue-styleguidist时遇到了这个问题,那么这个github issue对我很有帮助。


0
我们在使用webpack时遇到了这个问题。当将entry传递给webpack时,我们使用了path.resolve("./abc.ts")。这会根据当前终端路径解析相对路径。我们通过相对于当前目录解析路径来解决了这个问题。path.resolve(__dirname, './abc.ts');

0

我也遇到了同样的问题,尝试使用以下命令行 git config --global core.ignorecase false。这可能是由Git设置的区分大小写的配置引起的。在此之后,我的所有操作都没有任何警告。


0

对我来说,这些解决方案都不起作用。成功的方法是:

  • 删除有问题的文件(但在其他地方备份它们!)。
  • 将更改提交到Git。
  • 从备份中再次添加相同的文件。
  • 将新文件提交到Git...问题解决!

在我的情况下,我只是更改了包含导入模块的文件名的大写字母。它们在文件系统(OSX Finder、Bash)和代码编辑器(VS Code)中显示为小写字母。然而,打开 VS Code 中的文件仍然在编辑器标签中显示旧的文件名。我尝试完全删除文件然后重新添加它们。但是这没有起作用 —— 新添加的文件仍然在编辑器选项卡中显示旧的名称,并且我的构建仍然出现错误。

几个小时无果的修复尝试之后,我发现 Git 不会将文件名称大小写更改视为更改,因此它实际上从未更改那些文件名称:

如何在 Git 中提交区分大小写的文件名更改?

所以,我删除了有问题的文件,提交到 Git ,重新添加它们并重新提交 —— 这很有效。没有警告,构建错误消失了。


0

我正在使用Jetbrains Webstorm(在Windows上),我的运行配置中的package.json路径大小写不正确。

~\Projects\x\XWebsite\package.json

->

~\projects\x\XWebsite\package.json


0

我曾经遇到过同样的问题。我认为这是权限问题。如果你试图在 c:/dev/../projectfolder 运行应用程序,可能不起作用。但如果你尝试在 c:/user/../projectfolder/ 运行应用程序,它会正常工作。


0

我个人通过将 import axios from 'Axios'; 替换为 import axios from 'axios'; 来解决了这个问题。


请不要将“谢谢”作为答案。一旦您拥有足够的声望,您就可以投票支持有用的问题和答案。- 来自审核 - Emi OB
这与其他答案中的解决方案相同。是的,大小写很重要。无需发布新示例。 - Eric Aya

0
我已经更新了以下代码更改,并且它对我起作用了: 从:import {Observable} from 'rxJS'; 到:import {Observable} from 'rxjs';


0
对我来说,最简单的优化方法就是将组件文件夹移动到页面之外。这么简单,却很有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接