【发布时间】:2016-10-03 01:25:20
【问题描述】:
我似乎无法说服 Visual Studio Code 解析绝对 TypeScript 模块路径。相对路径有效,但绝对路径无效。我希望 Visual Studio Code 解析来自 ./src 文件夹的模块路径。
// This works when source file is in /src/here/there/file.ts
// and importing an interface in /src/api/interfaces.ts
import { Interface } from '../../api/interfaces';
// This doesn't work
import { Interface } from 'api/interfaces';
import { Interface } from '/api/interfaces';
import { Interface } from 'src/api/interfaces';
import { Interface } from '/src/api/interfaces';
// This works, but it is of course not supposed to be used
import { Interface } from 'c:/..../src/api/interfaces';
最后一个当然不算,因为每个开发人员的项目路径很可能不同。但是即使我们都设置了一个系统变量%ProjectXRoot%,我们也不能在代码中使用这个变量。 Visual Studio Code 不会解析此类模块路径。我试过了。
// Won't work
import { Interface } from '%ProjectXRoot%/api/interfaces';
当前安装的版本
• 打字稿:1.8.10
• VSCode:1.1.1
问题
我尝试以某种方式配置 Visual Studio Code 以解析绝对模块路径,但我似乎无法这样做。我尝试通过在两个不同的地方添加 baseUrl 来配置 tsconfig.json(在项目根目录中)。
{
...
"compilerOptions": {
"baseUrl": "./src", // Doesn't work
...
},
"baseUrl": "./src", // Doesn't work either
...
}
我尝试过src、./src 和./src/ 之类的值,但它们都不适用于任何上层配置位置。
那么如何配置 Visual Studio Code 以解析来自某个文件夹的绝对模块路径?
如果这不可能,至少从项目根目录解析绝对路径会更好。 Visual Studio Code 如何确定这一点?是你打开文件夹还是.vscode文件夹?
但它仍然是绝对路径的可行解决方案。我尝试使用类似于 Visual Studio 的 ~,但也无济于事。
(未解决)
--
正如steinso 在his answer 中指出的那样,所有以/、./ 或../ 开头的模块都被认为是相对的。尤其是第一个完全让我吃惊,因为我通常认为这是一个项目根相对路径。
但是这个事实基本上意味着主要问题现在变成了:我怎样才能提供模块导入作为绝对路径 (来自一些项目 em> 根文件夹路径) 呢?以斜线开头的路径通常意味着绝对的,但在这种情况下它不是。
即使我将编译器选项 moduleResolution 设置为 classic(因此模块解析不会查看 node_modules 文件夹)上面的第二组导入实际上应该 all work 按照 Microsoft 的链接文档。但由于某种原因,我在 Visual Studio Code 中仍然出现红色波浪线,并且在编译过程中出现错误。
那么我如何导入特定的项目模块而不提供确切的相对路径,而只提供它自己的项目相对路径?
【问题讨论】:
-
我提供了一个适用于
typescript@next和一些次要配置的答案。 -
我通过在我的 tsconfig 中添加“include”来实现这一点:(例如
"include": ["js/*"])typescriptlang.org/docs/handbook/tsconfig-json.html
标签: module typescript visual-studio-code