在相同路径的相对路径中,“文件名与仅包含在壳体中的已包含文件名不同”

zud*_*dsy 16 javascript windows compiler-errors typescript

错误TS1149:文件名'C:/Project/frontend/scripts/State.ts'仅在大小写方面与已包含的文件名'../frontend/scripts/State.ts'不同。

我已经三遍检查了参考资料中的大小写,实际文件中的大小写也正确。据我所知,这仅仅是因为相对路径使用了不正确的大小写,还是仅由于相对路径本身?

事实是,它在Mac和Linux上可以正常编译,但在Windows上会引发此错误。

如果有帮助,请forceConsistentCasingInFileNames在tsconfig中启用它,然后使用tsify进行编译。

mcj*_*jai 60

对于 VS Code IDE 用户:

您可以通过打开命令面板 (Ctrl+Shift+P) --> 选择 Typescript: 重新启动 TS 服务器来修复此问题。


Pau*_*erg 52

对我来说,当一个文件被迅速从改名发生问题someFile.tsSomeFile.ts。重新启动我的 IDE (Visual Studio Code) 使警告消失。

  • 我做了与 op 相同的操作,但对于 Vetur,即使重新启动 vscode 后它也不会消失 (7认同)
  • 您不需要重新启动 vs-code,只需重新启动 typescript 服务,或者如果您将其设置为仅使用 volar,则重新启动 volar。`ctrl +shift + p` 然后 `Typescript: Restart` 或 `Volar: Restart` (2认同)

Rus*_*kin 22

你需要禁用"forceConsistentCasingInFileNames"的在tsconfig.json文件中。

所以你应该有这样的东西:

{
  "compilerOptions": {
    ...
    "forceConsistentCasingInFileNames": false,
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我爱你。这正是我一直在寻找的。我们正在做一个升级项目,没有时间更改 500 多个文件的大小写。 (4认同)

Mar*_*lin 20

就我而言,错误是在import语句中。导入声明使用大写字母而不是小写字母,该字母在Windows中的开发过程中有效,但在编译生产时则无效。

错误:

import {SomeClass} from '/some/path/SomeClass.ts';
Run Code Online (Sandbox Code Playgroud)

正确:

import {SomeClass} from '/some/path/someClass.ts';
Run Code Online (Sandbox Code Playgroud)


tte*_*ple 18

重新启动 VS Code IDE 对我不起作用,我不想更改配置文件。这些是对我有用的步骤来解决这个问题:

  1. 在 VS Explorer 中,将问题文件重命名为新名称
  2. 将组件名称更改为文件内的新名称
  3. 保存文件
  4. 重新启动 VS 代码
  5. 将文件重命名回我最初想要的名称
  6. 更改组件名称以匹配

它一定是 VS Code 中的某种缓存问题

  • 就我而言,我只是重命名了该文件,然后再次将其重命名回来 (3认同)

nov*_*imo 12

2021 年更新

这是我的IDE中发生的有线错误,但可以通过两个简单的步骤轻松完成:

rename your file (not component) to another name and once again back to your original name.

例子:

> src
   > components
       > myFile.js
Run Code Online (Sandbox Code Playgroud)

首先,将 myFile.js 重命名为另一个名称(任何名称),例如 temp.js:

 myFile.js    ---->    temp.js
Run Code Online (Sandbox Code Playgroud)

第二,回到原来的名字,

 temp.js    ---->    myFile.js
Run Code Online (Sandbox Code Playgroud)

它也适用于*.ts *.tsx *.js *.jsx扩展。

  • 投我一票,我讨厌这行得通 (4认同)
  • “不幸的是”,它有效......我希望有一个更聪明的解决方案,比如强制 TS 使用新的外壳。 (3认同)
  • 重命名对我有用,谢谢。这很奇怪,我还注意到它指出“文件名 C:\users\Desktop\........... 与文件名 C:\users\desktop....... 不同” .. 仅有的 [...]”。意思是,它用不同的“桌面”大写字母读取两个参考文献。奇怪...我不知道(不认为...?)这是由于重新安装节点造成的?我的反恶意软件删除了节点文件,所以我必须卸载并重新安装它...... (2认同)
  • 我不敢相信这对我也有效。我不喜欢这样的解决方案,这对我来说毫无意义:-) (2认同)

Fra*_*mes 10

重启你的 TS 服务器还不够!

截至 2023 年,我找到了重现该问题的一致方法。只要您仍然有imports 指向错误的路径,就会发生此错误!(更名后)

// Wrong path, but same "Already included file name" error
import { Home } from './home';
// CORRECT path, but same "Already included file name" error
import { Home } from './Home'; // <- new path
Run Code Online (Sandbox Code Playgroud)

修复所有导入路径并重新启动 TS 服务器(在 VS Code 上,按 F1 > Restart TS server

TS 团队绝对应该致力于改进此错误消息:)


小智 6

当同一文件夹中存在两个名为 a.tsx 和 A.tsx 的文件时,您将收到此错误


jam*_*ace 5

我的是一个 vue 问题,我删除了 .vue 扩展名并且它起作用了


Cow*_*org 5

好吧,只需要在这里添加我的“解决方案”,因为它与其他解决方案不同。错误消息清楚地说明了它在哪里看到错误。它是已重命名的目录的外壳(从 Utils -> utils)。尽管它在所有地方都被正确重命名,但我仍然收到错误。我的解决方案是再次将其重命名为 utils2(为什么不呢,呵呵)。之后一切正常


Kon*_*zyb 5

对于 VS Code,唯一对我有用的就是清除编辑器历史记录:

  1. 按 Ctrl + Shift + P。
  2. 键入命令清除编辑器历史记录。
  3. 按 Enter 键。


zud*_*dsy 0

答案是我们使用的是 tisfy 1.0.1,直到forceConsistentCasingInFileNames4.0.0 才支持。更新解决了该问题。