转到定义在Visual Studio代码不起作用

我正在尝试为https://code.visualstudio.com/docs/languages/javascript设置一个nodejs项目的visual studio代码

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

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

这个文件告诉VS Code您正在编写符合ES5的代码,您要使用的模块系统是commonjs框架。 通过设置这些选项,您可以开始编写在其他文件中引用模块的代码。 例如,在app.js中,我们需要导出Express.Router类的./routes/index模块。 如果您在路由上显示智能感知,您可以看到路由器类的形状。

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

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

有没有办法去定义工作?

TLDR; 如果你直接在exports对象上设置你的variables/函数,它似乎工作。


在尝试用不同的方式来编写模块之后,我发现如果以某种方式编写模块,它就会起作用。 这是一个有效的例子。

 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

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