在Visual Studio Code中自动导入仅提供TypeScript中带有Lerna子包的绝对路径


81

出于某种原因,最近我的Visual Studio代码发生了变化,并开始仅提供带有Lerna软件包的子软件包级别的绝对导入,例如:

在此处输入图片说明

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

这是错误还是配置问题?

Import Module Specifier在Visual Studio Code中将TypeScript的设置设置为所有三个选项(自动,相对和绝对),它们似乎没有任何区别。


如果您设置了一个可以克隆以重现该问题的存储库,我将进行处理。(我不想花时间尝试自己建立一个像您这样的项目,只是可能导致无法重现该问题。)
Matt McCutchen

首先,至少有一个用户已经在工作场所和用户文件中importModuleSpecifier设置了relative文件,并且仍然以完整的方式导入-编辑:这个问题表明TS版本-那里的版本和问题不同,可能会引起怪异。从TS 2.3.2更改为3.4.5为我解决了此问题。/耸肩
鲁芬,

Answers:


213

在Visual Studio代码中,菜单文件首选项设置用户设置

"typescript.preferences.importModuleSpecifier": "relative"

这对我来说可以。它进口

import { RegistrationComponent } from '../../abc-modules/registration/registration.component';

代替

import { RegistrationComponent } from 'app/abc-modules/registration/registration.component';

2
谢谢!设置为auto时,似乎在使用相对和绝对之间进行切换。
Moulde

我要指出一点:拥有绝对路径会更好,但要从源目录(src /)开始,例如“从my-module / bla / bla / ClassName.js导入..”,因为这种方法可以让您移动包并类而不更改导入,因此您应避免使用相对路径
John Tribe

11
John Tribe的建议与Vanilla JS保持正当关系。但是,我将TypeScript与TS的“ src”文件夹和已转换的JS的“ dist”文件夹一起使用,因此绝对路径会导致运行时错误。
hirikarate

惊人的解决方案。@hirikarate,帮自己一个忙,停止使用Abs路径。生态系统并未完全支持它(包括IDE)。我花了6个月的时间才能使它正常工作。完全浪费时间
斯塔夫·阿尔菲

1
JavaScript › Preferences: Import Module Specifier Preferred path style for auto imports.-> relative(此外,为了进行开玩笑的测试,绝对路径会破坏测试套件@JohnTribe。)
auerbachb

3

我从Google登陆这里,遇到了相反的问题。我的Visual Studio Code实例始终导入相对路径,即使它是来自其他Lerna程序包也是如此。

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

现在,一切正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.