VSCode 导入忽略符号链接以支持更深的 node_modules

Posted

技术标签:

【中文标题】VSCode 导入忽略符号链接以支持更深的 node_modules【英文标题】:VSCode import ignoring symlinks in favour of deeper node_modules 【发布时间】:2021-10-19 06:22:09 【问题描述】:

我在使用 VSCode/TS 和自动导入时遇到问题。

我们有一项服务,我们称它为 Manager。 Manager 从一个名为 Helpers 的私有 npm 包中导入一些功能。 Manager 和 Helpers 都从另一个名为 Types 的私有包中导入类型。

在本地工作时,我添加到 Types,然后在 Manager 中添加 npm 链接类型以访问新类型,而无需发布 Types 包(在以前的代码库上完成了此操作,没有任何问题,效果很好)

输入问题...一旦符号链接import newType from '@companyName/Types' 的语句实际上会解析为node_modules/@companyName/Helpers/node_modules/Types,我再多说也不会劝阻它。

我认为这是一个 VSCode 问题,但是如果我重新启动 Typescript 服务器,则会出现一个简短的窗口,它默认为正确的包路径,并且 VSCode 可以看到类型。几秒钟后(我假设一旦 TS 服务器恢复)它显示一个错误,我们又从错误的地方导入。

我可以通过对 node_modules 的相对导入来解决这个问题,但这感觉不太理想。

有人知道这里可能出了什么问题吗?就像 TS 不想使用符号链接的导入,如果它可以在没有符号链接的地方找到它

【问题讨论】:

【参考方案1】:

找到解决方案,将其添加到 tsconfig 排序它:

"paths": 
      "@companyName/types": [
          "../node_modules/@companyName/types"
      ]
    ,

【讨论】:

以上是关于VSCode 导入忽略符号链接以支持更深的 node_modules的主要内容,如果未能解决你的问题,请参考以下文章

应该如何配置 VSCode 以支持 Lerna Monorepo?

是否可以让 SCP 在复制过程中忽略符号链接?

gcc 在链接时忽略符号名称的大小写

vscode用啥符号把某一段代码包起来,类似C#的#region?

Unix/Linux 符号链接是不是支持回退?

VSCode 中的可选链接运算符支持