我希望能够使用 VS Code 中的 转到定义功能来获取路径,例如:
const path = require('path');
const mypath = require(path.resolve('my', 'path'));
如何配置 VS Code 来识别这些路径?
这是我正在谈论的一个例子:
我希望能够对上面示例代码中的
mypath
变量使用“转到定义”操作。
VS Code 和 TypeScript 不会努力弄清楚从运行时函数(如
path.resolve
)的输出返回的内容是否在静态/“编译”时可知。只需切换为使用 require("my/path")
而不是 require(path.resolve("my", "path"))
。无论如何,我看不出这样做的理由——如果您认为在使用 require
时需要处理 Windows 的不同路径分隔符,那么您不需要这样做,因为 NodeJS 的 require
解析了 POSIX 风格独立于操作系统的路径(require
的路径参数中的 POSIX 路径将适用于 Windows 上的 NodeJS)。直接来自文档:
POSIX 风格的相对路径以独立于操作系统的方式解析,这意味着上面的示例在 Windows 上的工作方式与在 Unix 系统上的工作方式相同。
如果您实际上将
path.resolve
与在运行时派生的更复杂的输入一起使用,并且不可能静态派生,那么根据定义,IntelliSense 不可能为您提供这样的设施,因为 IntelliSense 通常基于静态分析.
如果它是静态可推导的,并且您想要获得这样的功能,则不需要在 VS Code 中配置某些内容来实现它。这取决于 tsserver 是否支持它。如果没有(当前您提供的示例就是这种情况),那么您获得它的唯一方法是首先向 TypeScript 维护者提出功能请求问题单来请求此类功能。