vscode中的自动导入仅在TypeScript中提供带有lerna子包的绝对路径

Anu*_*aus 27 typescript visual-studio-code auto-import

由于某种原因,最近我的vs代码进行了更改,并开始仅使用Lerna软件包从子软件包级别提供绝对导入,例如:

在此处输入图片说明

如您所见,自动导入将建议@package/server/src/database文件的路径,因为它正好是../database要编辑的文件位于同一软件包中,并且位于文件下面的一个文件夹中,该文件夹包含我要使用的数据库变量。

这是错误还是配置问题?

我已经将Import Module Specifiervs-code中TypeScript的设置设置为所有三个选项(自动,相对和绝对),它们似乎没有任何区别。

Lui*_*mes 84

在 Visual Studio Code 中,菜单文件 \xe2\x86\x92 首选项 \xe2\x86\x92 设置 \xe2\x86\x92 用户设置

\n

通过 importModuleSpecifier 搜索

\n

在此输入图像描述

\n

  • 这对我有用。请记住,此技巧仅适用于打字稿。您需要相同的步骤来处理 .js 文件 (2认同)

lim*_*o93 75

VScode文件>首选项>设置>用户设置上

"typescript.preferences.importModuleSpecifier": "relative"
Run Code Online (Sandbox Code Playgroud)

对我来说很好。它进口

import { RegistrationComponent } from '../../abc-modules/registration/registration.component';
Run Code Online (Sandbox Code Playgroud)

代替

import { RegistrationComponent } from 'app/abc-modules/registration/registration.component';
Run Code Online (Sandbox Code Playgroud)

  • `JavaScript › 首选项:导入模块说明符自动导入的首选路径样式。` --> `相对` (此外,对于玩笑测试,绝对路径会破坏测试套件@JohnTribe。) (4认同)
  • 如果它不起作用:请注意,您需要更改 Typescript > Preference,而不是 Javascript > Preference (4认同)
  • John Tribe的建议是Vanilla JS的合法建议。但是我将TypeScript与TS的“ src”文件夹和已转换的JS的“ dist”文件夹一起使用,因此绝对路径会导致运行时错误。 (3认同)
  • 谢谢!设置为auto时,似乎在使用相对和绝对之间进行切换。 (2认同)
  • 现在还有“项目相关”,这使得它只喜欢从同一项目内相对导入。对于我们使用 tsconfig 路径进行 NX monorepo 设置很有用。仅使用“相对”使 vscode 建议相对导入而不是我们配置的路径。 (2认同)

小智 10

我的问题是baseUrl我的文件中设置了该选项tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".", // remove
  },
}
Run Code Online (Sandbox Code Playgroud)

删除该选项后;VSCode 立即开始通过相对路径导入。此方法的好处是,您可以将 VSCode 选项importModuleSpecifier设置为shortest,并且相对路径导入仍然有效。


Dod*_*act 5

我从 Google 来到这里,却遇到了相反的问题。我的 Visual Studio Code 实例总是导入相对路径,即使它来自不同的Lerna包。

事实证明,我只是忘记将错误导入的包添加到我的消费包package.json文件中。

现在,一切都按预期进行。

  • 同样,使用 NX 和 tsconfig 路径,我们通过使用“project-relative”作为 importModuleSpecifier 来修复该问题。仅使用相对值也将其他项目的导入更改为相对值,这当然不是我们想要的。不过,“项目相关”效果很好。 (3认同)