每次我`git commit`时VS Code的Typescript IntelliSense都会中断

Posted

技术标签:

【中文标题】每次我`git commit`时VS Code的Typescript IntelliSense都会中断【英文标题】:VS Code's Typescript IntelliSense breaks every time I `git commit` 【发布时间】:2021-11-27 12:05:59 【问题描述】:

我有一个项目,在不同的目录中有几个 tsconfig.json 文件。通常,VS Code 仅将每个 tsconfig.json 用于它所在的目录。

当我git commit 时,我使用 Husky 对更改的文件运行 Eslint。 Eslint 使用@typescript-eslint/parser。代码提交后,我在 VS Code 中收到大量 Typescript 错误。重启TS服务器就修复了,但是慢了几分钟(我觉得是在重建TS缓存?)。

我认为当 Eslint 运行时,它会使用一个(或多个)tsconfig.json 文件,具体取决于更改文件的位置。然后,VS Code 以某种方式检测到使用了特定的 tsconfig.json,然后它将它用于我的整个项目。我希望 VS Code 继续使用它检测到的 tsconfig.json 文件,而不是拿起 Eslint 使用的 tsconfig.json。

我可以采取哪些措施来防止这种情况发生?有没有办法在我提交代码时暂时禁用 VS Code 的 TS 服务器?或者有没有适当的方法来防止 VS Code 错误地使用 tsconfig.json 文件?

【问题讨论】:

你能分享一下“一堆 Typescript 错误”的输出吗? 很多文件没有找到,没有任何隐含的,等等,因为它没有使用正确的配置 您可以编辑您的问题以显示错误片段吗?也许这可以为我们指明正确的方向。 您可以通过命令面板启用 TS 服务器日志。这可能有助于您了解在 lint 运行后 VSC 正在加载哪个配置文件。如果没有更多关于错误消息的详细信息,很难在此处查明原因。您的日志/消息的输出肯定会有所帮助。 【参考方案1】:

我发现了问题:

多个tsconfig.jsons 中包含.d.ts 文件。不同的.d.ts 文件中有一些类型定义相互覆盖,因此导入顺序很重要。不知什么原因,在我git commit之后,VS Code以不同的顺序导入它们。

我通过不再覆盖定义来修复它。

【讨论】:

以上是关于每次我`git commit`时VS Code的Typescript IntelliSense都会中断的主要内容,如果未能解决你的问题,请参考以下文章

从code review到Git commit log

VS Code的Git Control无法正确识别husky(NVM)问题

VS Code的Git Control无法正确识别husky(NVM)问题

VS Code的Git Control无法正确识别husky(NVM)问题

如何在 VS-code 中使用 Git 工作树?

VS Code - 节点断点未绑定