转到 visual studio 中的定义代码不起作用

Go to definition in visual studio code does not work

我正在尝试为 https://code.visualstudio.com/docs/languages/javascript

之后的 nodejs 项目设置 visual studio 代码

我在我的根文件夹中创建了一个 jsconfig.json 文件,内容为

{
  "compilerOptions": {
    "target": "ES5", //tried ES6 as well
    "module": "commonjs"
  }
}

This file tells VS Code you are writing ES5 compliant code and the module system you want to use is the commonjs framework. With these options set, you can start to write code that references modules in other files. For example, in app.js we require the ./routes/index module, which exports an Express.Router class. If you bring up IntelliSense on routes, you can see the shape of the Router class.

虽然它似乎不适用于 vscode 0.9.1。我没有在自己的模块上获得智能感知。去定义也不行。

https://code.visualstudio.com/docs/runtimes/nodejs#_great-code-editing-experiences

有没有办法让 go to definition 正常工作?

TLDR;如果您直接在 exports 对象上设置 variables/functions,它似乎可以工作。


在尝试了不同的方式来编写模块后,我发现如果您以某种方式编写您的模块,它是可行的。这是一个有效的例子。

exports.myFunction = function (a, b) {
    return a + b;
};

现在,如果您从另一个文件导入此模块,您将获得智能感知并转到定义即可。但是,如果您像这样或任何其他变体编写模块,它将无法工作。

var myModule = {};
myModule.myFunction = function (a,b) {
    return a + b;
};
exports = myModule;

在 vscode 存储库上提交了一个问题。

https://github.com/Microsoft/vscode/issues/15004#issuecomment-258980327

如果有变化,我会更新我的答案。

如果 none 的解决方案有效,请为 mac 用户尝试此解决方案。

有时 VSC 会缓存设置以及您尝试多少它都会以相同的方式运行,因此请尝试重置 VSC。

rm -rfv "$HOME/.vscode"
rm -rfv "$HOME/Library/Application Support/Code"
rm -rfv "$HOME/Library/Caches/com.microsoft.VSCode"
rm -rfv "$HOME/Library/Saved Application State/com.microsoft.VSCode.savedState"

重新启动 VSC - code .(应该从头开始)

同时删除 .vscode/ rm -rf .vscode/