Typescript: 文件仅在大小写与已包含的文件不同:正确的大小写但相对路径

创建于 2018-07-05  ·  44评论  ·  资料来源: microsoft/TypeScript

Error TS1149: File name 'C:/Project/frontend/scripts/State.ts' differs from already included file name '../frontend/scripts/State.ts' only in casing.

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

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

Bug Fix Available

最有用的评论

我最近偶然发现了这个完全相同的错误。
经过一番谷歌搜索后,我发现了这一点。 最后的答复引起了我的注意。 因此,我只是关闭了在Visual Studio Code中正在使用的文件夹,然后将其重新打开。 一切加载完毕后,没有错误,我也不必弄乱tsconfig.json文件。

希望这可以帮助

所有44条评论

这看起来像个错误,但我们需要某种方式来重现它。 您是否有一个zip文件或我们可以使用的回购或文件说明?

事实证明,问题在于第三方模块tsify。 我们的项目使用的是1.0.1,直到4.0.0才支持forceConsistentCasingInFileNames

我的组件导入之一也有同样的问题。 我的组件目录名称是历史名称,带有相同的“ h”,我试图以大写的“ H”导入。 它应该是 ”
从“ ./historical/graph-data/graph-data.component”;中导入{GraphDataComponent},而不是从app.moudule中的“ ./Historical/graph-data/graph-data.component”中导入“ GraphDataComponent”。 ts。

谢谢@aaybhangu!

嗨,我仍然遇到此问题-错误TS1149:文件名'src / models / headers / userRole.ts'仅与大小写字母有所不同,它与已包含的文件名'src / models / headers / UserRole.ts'不同。
我尝试了多种方法来修复它,但是没有运气。 我正在使用Windows。

我也面临着同样的问题。
现在,通过设置“解决”:
"forceConsistentCasingInFileNames": false,
tsconfig.json

我最近偶然发现了这个完全相同的错误。
经过一番谷歌搜索后,我发现了这一点。 最后的答复引起了我的注意。 因此,我只是关闭了在Visual Studio Code中正在使用的文件夹,然后将其重新打开。 一切加载完毕后,没有错误,我也不必弄乱tsconfig.json文件。

希望这可以帮助

我遇到了同样的问题

  • 删除工作区没有帮助
  • 更改forceConsistentCasingInFileNames并没有帮助

就我而言,目录中某处发生了错误,已更改...? 因此,我必须执行以下操作来修复所有问题。

  1. 您将目录名称更改为"OriginalDirectoryName" => "AnotherName"
  2. VsCode将尝试更新源中的目录名称,因此请等待几秒钟,它将显示所有需要使用新目录名称进行更新的文件。
  3. 转到File -> Save全部并保存全部
  4. 将目录名称更改回"AnotherName" => "OriginalDirectoryName"
  5. 同样,它将尝试更新文件,因此将其全部保存。
  6. 重新启动VsCode。

那么它应该解决问题。

将文件从camelCase重命名为所有首字母大写后,出现此错误

就我而言,我曾经创建一个名为Logger但后来更改为logger 。 导入该文件的一个文件始终显示此错误消息,但实际上在终端或其他文件中则不会显示此消息。

因此,我使用VSCode Reload Window功能重新加载VSCode,错误消息消失了。 所以我认为也许在VSCode中的某个地方有此错误的缓存,没有清除吗? 如果在确保文件名正确之后遇到此问题,可以尝试一下。

我遇到了同样的问题,只是发现由于某种原因,在某些ts文件中,使用大写字母来调用它,然后我将其重命名为小写字母,并且可以使用。

您也可以尝试删除此模型ts文件,然后使用angular-CLI重新创建。

更改大小写会导致updateOpen命令出现异常。 注意在同一命令中如何以不同的大小写打开文件并以原始大小写关闭文件。

Info 69   [10:30:18.128] request:
    {"seq":5,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["c:/temp/est/Logger.ts"],"openFiles":[{"file":"c:/temp/est/logger.ts","fileContent":"export class logger {\r\n    \r\n}","scriptKindName":"TS","projectRootPath":"c:\\temp\\est"}]}}
Err 70    [10:30:18.153] Exception on executing command {"seq":5,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["c:/temp/est/Logger.ts"],"openFiles":[{"file":"c:/temp/est/logger.ts","fileContent":"export class logger {\r\n    \r\n}","scriptKindName":"TS","projectRootPath":"c:\\temp\\est"}]}}:

    Debug Failure. False expression: Script should not exist and not be open already

    Error: Debug Failure. False expression: Script should not exist and not be open already
        at ProjectService.applyChangesInOpenFiles (c:\Typescript\built\local\tsserver.js:138090:34)
        at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (c:\Typescript\built\local\tsserver.js:138972:46)
        at c:\Typescript\built\local\tsserver.js:140630:88
        at IOSession.Session.executeWithRequestId (c:\Typescript\built\local\tsserver.js:140621:28)
        at IOSession.Session.executeCommand (c:\Typescript\built\local\tsserver.js:140630:33)
        at IOSession.Session.onMessage (c:\Typescript\built\local\tsserver.js:140653:35)
        at Interface.<anonymous> (c:\Typescript\built\local\tsserver.js:141968:27)
        at Interface.emit (events.js:182:13)
        at Interface._onLine (readline.js:290:10)
        at Interface._normalWrite (readline.js:433:12)
        at Socket.ondata (readline.js:149:10)
        at Socket.emit (events.js:182:13)
        at addChunk (_stream_readable.js:283:12)
        at readableAddChunk (_stream_readable.js:264:11)
        at Socket.Readable.push (_stream_readable.js:219:10)
        at Pipe.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

这个问题似乎不仅仅是检查根文件名而已。 重用程序时,还有另一个失败的测试用例,它是简单的程序重用测试:

it("forceConsistentCasingInFileNames works when renaming file with different casing", () => {
            const loggerFile: File = {
                path: `${projectRoot}/logger.ts`,
                content: `export class logger { }`
            };
            const anotherFile: File = {
                path: `${projectRoot}/another.ts`,
                content: `import { logger } from "./logger"; new logger();`
            };
            const tsconfig: File = {
                path: `${projectRoot}/tsconfig.json`,
                content: JSON.stringify({
                    compilerOptions: { forceConsistentCasingInFileNames: true }
                })
            };

            const host = createWatchedSystem([loggerFile, anotherFile, tsconfig, libFile, tsconfig]);
            createWatchOfConfigFile(tsconfig.path, host);
            checkOutputErrorsInitial(host, emptyArray);
            host.writeFile(anotherFile.path, anotherFile.content.replace("./logger", "./Logger"));
            host.runQueuedTimeoutCallbacks();
            checkOutputErrorsIncremental(host, [
                createCompilerDiagnostic(Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, loggerFile.path, `${projectRoot}/Logger.ts`),
            ]); // Currently the errors are not reported in watch mode but will be reported if program is created from scratch.
        });

是的,我遇到了同样的问题,以前提到的修复程序/解决方法都没有任何帮助。

就我而言,消息是:

error TS1149: File name '/mnt/c/Users/<username>/Documents/adobe-scripts/InDesign/Create Downloadable 
(2020a)/Illustrator/2015.3/index.d.ts' differs from already included file name '/mnt/c/Users/<username>/Documents/adobe-scripts/InDesign/Create Downloadable (2020a)/illustrator/2015.3/index.d.ts' only in casing.

@SturmB

插画家

插画家

我很清楚错误消息以及编译器看到的内容。 我不明白的是它在哪里获取illustrator的小写版本。 我进行了几次搜索,发现没有任何实例,其中单词illustrator (当未在注释或字符串等中使用时)全部为小写。 这里我引用了一个实例index.d.ts该文件Illustrator文件夹,这个词是正确的资本,就像目录名。

我有一个类似的问题,但是我无法重现。 似乎是VSCode错误:具有大写名称的文件在某些​​情况下(包括源代码管理菜单)显示为小写名称。

我注意到,有时有人可能将文件夹的名称从'foo'更改为'Foo',当您执行git pull它要么不会更新文件夹名称,要么会忘记推送更改。 在这种情况下,您所有的代码引用都是正确的,代码中没有任何错误,并且经常可以找到该文件夹​​中的文件; 只会让TS吓坏了。

因此,找到根本原因所在的文件夹。 更改文件夹的名称。 并正确提交:

git mv foo tmp
git mv tmp Foo

紧跟着commitpush是在git repo中重命名目录的最简单方法。

Git的配置设置告诉它是区分大小写还是不区分大小写: core.ignorecase 。 要告诉Git区分大小写,只需将此设置设置为false

查看更多:

https://stackoverflow.com/questions/17683458/how-do-i-commit-case-sensitive-only-filename-changes-in-git/17688308#17688308

它为我所做的是撤消所有重命名,关闭服务器,重命名我要重命名的所有文件并重新启动服务器。 必须是某种缓存问题。

VSCode中的重新加载窗口解决了该问题。 我将React组件更改为camelCase并遇到了问题。 这似乎是VSCode中的某种缓存问题。

我刚遇到这个; 我的componentA.tsx导入了../store/someStore但是此导入导致此错误,表明文件名是SomeStore.ts (即使文件系统和VSCode在该位置显示了someStore.ts

文件名“ /mypath/store/someStore.ts”仅在大小写方面与已包含的文件名“ /mypath/store/SomeStore.ts”不同。 _ts(1149)_

原来其他文件( ../store/index.ts )导入不正确( ./SomeStore ),但是_not_没有引发任何错误。 修复该导入并重新启动VSCode之后, componentA.tsx不再引发此错误。

将修复程序恢复为index.ts并重新启动VSCode会再次导致componentA.tsx出现错误。

我帮助我的处境的一件事是停止使用WSL。 我回到了利用Cygwin的原始自定义设置,此后就再也没有这个问题。

我也面临着同样的问题。
现在,通过设置“解决”:
"forceConsistentCasingInFileNames": false,
tsconfig.json

谢谢,有帮助

经过一番谷歌搜索后,我发现了这一点。 最后的答复引起了我的注意。 因此,我只是关闭了在Visual Studio Code中正在使用的文件夹,然后将其重新打开。 一切加载完毕后,没有错误,我也不必弄乱tsconfig.json文件。

这真的有效

我可以通过设置文件名然后将其重命名为另一个来重现此文件。 它似乎在源映射中未正确更新。 我删除了问题文件,然后再次添加。 有点痛,是的,但是确实有效。

我遇到了问题,我通过设置“ forceConsistentCasingInFileNames”来解决它:false
在tsconfig.json中,然后再次设为true。

我修复它只重新启动VSCode。

更改文件名后,我在WebStorm中也遇到类似的问题,我很确定这是一些IDE缓存。

如果清除缓存/重新启动IDE无效,请删除文件夹,再次克隆存储库,然后进行全新安装。

我在Mac上找到了这个:

情境

  • 名为ComponentA.ts的文件
  • componentB.tsimport ComponentA from './ComponentA';
  • componentC.ts也有import ComponentA from './ComponentA';
  • ComponentA.ts文件名更改为componentA.ts
  • componentC.ts更新为import ComponentA from './componentA;'
  • 忘记更新componentB.ts的导入,因此它仍然具有旧的大写import ComponentA from './ComponentA;'

错误(大致):

 File name '/componentA.ts' differs from already included file name  '/ComponentA.ts'  only in casing. ts(1149)

原因:

在Mac上,不区分大小写的方法是首先在componentB.ts中解析剩余的导入import ComponentA from './ComponentA;' ,然后“缓存/注册”此导入路径。

然后,即使正确,在componentC.ts中的正确导入也会出错。

补救方法:

  • 查找componentA.ts / ComponentA.ts的所有导入
  • 检查是否区分大小写并更正。

就我而言,错误消息文件componentC.ts实际上是正确的,并且我不得不修复componentB.ts ,即使该消息表明componentC.ts存在问题。

我不得不重命名我的文件和gulp构建。 然后,我将其重命名回原来的原始名称,并且构建良好。

由于奇怪的缓存无法涵盖更改vue文件的名称并因此抱怨Vetur的情况,我不得不按照@uniquexiaobai的建议重新加载VS Code( Ctrl + Shirt + P -> Reload Window)。

重新启动Typescript-Server就足够了。 VSCode重新启动是多余的。

在OSX上的VSC中: CMD + Shift + P然后键入TypeScript: Restart TS server

使用webstorm,您需要使缓存无效并清除缓存:
文件>使缓存无效/重新启动

我找到的最短,最好的解决方案是。

只需从引起套管问题的单词中删除该单词即可。
例如
ListsDrawerOfContentListsDrawerofContent

我从文件名中删除了。 并且编译器正确地编译了它。

然后,我根据需要的情况将其重命名为ListsDrawerOfContent
像魅力一样工作。

另外,请记住git。

https://stackoverflow.com/questions/17683458/how-do-i-commit-case-sensitive-only-filename-changes-in-git

我在导入时遇到了同样的问题,将文件从“ a”重命名为“ A”后,我只是重新启动了vs代码,然后它可以工作。

我有同样的问题。 VSCode重新启动并设置“ forceConsistentCasingInFileNames”:false不能帮助我。

错误信息:(只是磁盘符号不同)
文件名'D:/mycode/devmono2/packages/server-sdk/index.ts'与已包含的文件名'd:/mycode/devmono2/packages/server-sdk/index.ts'仅在大小写不同。 1149)

为什么?

解决了!
我的问题很简单。

在Mac上本地一切正常,但在我的Jenkins服务器上却出现此错误。 问题很简单,本地文件名是“ quote.ts”,而在我的远程git repo中,文件名是“ Quote.ts”。

问题是如何产生的
因此,文件名最初是我推送的“ Quote.ts”。 然后,我更改为'quote.ts',但是git并未将其视为更改(我认为macs不区分大小写)-因此,更改大小写未反映在远程回购中。

因此,当詹金斯管道运行时,它在被引用为“ ../../quote.ts”时拉下了“ Quote.ts”,这会导致错误。

我是怎么解决的

  1. 喝咖啡
  2. 手动将远程仓库中的文件名更改为小写
  3. git本地拉
  4. 运行管道

am! 希望这可以帮助某人

发生了类似的问题,这些错误产生了大约100个。

没有仔细阅读它们,因为它们似乎都存在相同的根本问题。 最近切换到WSL2中的运行节点,我认为这是问题的原因。 经过2个小时的失败之后,我实际上浏览了整个列表,并找到了一个存在实际错误的示例。

从“ ../Foo”导入{FooInterface}; //应该是'../foo'
从“ ../Bar”导入{BarService}; //应该是'../bar'

我将其更改为小写字母,重新加载了vscode,对其进行了重新构建,所有错误均消失了。

我认为发生的事情是ts试图导入不正确的路径(“ Foo”而不是“ foo”),然后缓存结果,并在处理其余代码时尝试使用不正确的缓存路径。

希望这可以帮助某人!

我只是重新启动我的ide,然后错误消失了

只需在组件中创建相同的对象,然后在成功运行后启动ng,然后删除对象并导入您的链接,
那么它应该起作用了
在我的项目中,它起作用了。

这只是发生在我身上,这是一个尚未解决的持续性问题。 每当我更改目录名称的大小写并尝试提交更改时,都会发生这种情况。 Git无法识别目录名称的大小写更改。

+1 ...但是WHYYYYYYYY

我只是面对这个问题。 原来,当我尝试使用vscode导入它时,VSCode使用了以前的文件名和目录名。 所以我修改了它,在运行tsc它在终端中没有显示任何错误,但是我仍然在VSCode中得到那条弯曲的读取行。 因此,我在vscode( Typescript: Restart TS Server )中重新启动了Typescript服务器,它消失了。 希望它能帮助某人。

@ninjavang你帮了我! 我的gitlab ci / cd管道发生了相同的问题。 原来,当我转到远程分支并检查文件的路径时,文件有两个版本,每个版本均区分大小写。

我删除了遥控器上不需要的版本,在本地复制了文件,拉下遥控器,刷新了VS Code,然后重新添加了文件。 有效!

谢谢您的帮助!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

blendsdk picture blendsdk  ·  3评论

Antony-Jones picture Antony-Jones  ·  3评论

kyasbal-1994 picture kyasbal-1994  ·  3评论

jbondc picture jbondc  ·  3评论

seanzer picture seanzer  ·  3评论