文件名仅在大小写上与包含的文件名不同
File name differs from included file name only in casing
当我们有两个名称相同但大小写不同或文件重命名的文件和我们的 IDE 故障时,会出现错误“文件名与仅在大小写中包含的文件名不同”。
要解决此错误,请确保没有两个文件只是大小写不同,然后重新启动 IDE。
下面是错误如何发生的示例。
// Error: File name '/home/borislav/Desktop/typescript/src/Index.ts' // differs from already included file name // '/home/borislav/Desktop/typescript/src/index.ts' only in casing. import { country } from './Index'; console.log(country);
这是一个名为的文件,它从同一目录中名为
(capital )index.ts
的文件导入。Index.ts
I
myFile.ts
和MyFile.ts
.重启你的代码编辑器
错误的另一个常见原因是当我们重命名文件以使用不同的大小写和我们的 IDE 故障(VSCode 通常需要重新启动)。
myFile.ts
为MyFile.ts
,您的代码编辑器可能无法判断这是同一个文件。完全重启您的 IDE,因为
重新加载 VSCode 窗口在大多数情况下都无法完成工作。
重新启动后,您的 IDE 应该能够发现同一目录中没有两个同名文件。
如果这没有帮助,请尝试重新启动您的 TS 服务器。
包含错误大小写的导入路径
如果导入路径的大小写错误,也会出现此错误。
import { country } from './myFile'; import { country } from './MyFile';
这两个 import 语句在机器上的作用相同,Windows
因为文件名Windows
不区分大小写。
但是,如果您在 Linux 或 macOS 等类 Unix 操作系统上运行此代码,您会收到错误消息,因为它们区分大小写处理文件名,并且这是两个完全不同的文件。
确保导入语句中的路径没有错误的大小写。
placeholder.ts
,然后将其重命名回原始名称。我已经写了一篇关于
如何从 TS 中的另一个文件导入值的详细指南。
在中设置“forceConsistentCasingInFileNames”tsconfig.json
有时这有助于 IDE 意识到没有两个文件具有相同的名称,但大小写不一致。
最佳做法是使用tsconfig.jsonforceConsistentCasingInFileNames
文件中的选项
。
{ "compilerOptions": { "forceConsistentCasingInFileNames": true, // ... } }
当
forceConsistentCasingInFileNames
选项设置为true
时,如果您尝试使用与磁盘上文件名大小写不同的大小写来包含文件,TypeScript 将发出错误。
例如,如果您尝试从 导入MyFile.ts
,但文件的名称是
myFile.ts
,则会出现错误。
false
,TypeScript 遵循其运行的文件系统的区分大小写规则。如果您团队中的一些开发人员使用 Windows 机器和其他类 Unix 操作系统,这可能会非常混乱,因为如果您尝试通过myFile.ts
指定导入MyFile.ts
,它将在 Windows 上找到,但在 macOS 或 Linux 上找不到。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: