Node.js 转到visual studio代码中的定义无效

Node.js 转到visual studio代码中的定义无效,node.js,visual-studio-code,Node.js,Visual Studio Code,我正在尝试为nodejs项目设置visualstudio代码,如下所示 我在根文件夹中创建了一个jsconfig.json文件,其中包含 { "compilerOptions": { "target": "ES5", //tried ES6 as well "module": "commonjs" } } 该文件告诉VS代码您正在编写ES5兼容的代码,并且您想要使用的模块系统是commonjs框架。设置这些选项后,您可以开始编写引用其他文件中模块的代码。例如,在app.

我正在尝试为nodejs项目设置visualstudio代码,如下所示

我在根文件夹中创建了一个jsconfig.json文件,其中包含

{
  "compilerOptions": {
    "target": "ES5", //tried ES6 as well
    "module": "commonjs"
  }
}
该文件告诉VS代码您正在编写ES5兼容的代码,并且您想要使用的模块系统是commonjs框架。设置这些选项后,您可以开始编写引用其他文件中模块的代码。例如,在app.js中,我们需要./routes/index模块,该模块导出一个Express.Router类。如果在routes上启用IntelliSense,则可以看到Router类的形状

尽管它似乎不适用于vscode 0.9.1。我自己的模块没有智能感知功能。“转到定义”也不起作用


有没有办法让定义工作起来?

TLDR;如果直接在
导出
对象上设置变量/函数,它似乎可以工作


在尝试了不同的模块编写方法之后,我发现如果您以特定的方式编写模块,它是有效的。下面是一个有效的例子

exports.myFunction = function (a, b) {
    return a + b;
};
现在,如果您从另一个文件导入此模块,您将获得intellisense并转到定义。但是,如果您像这样编写模块或任何其他变体,它将无法工作

var myModule = {};
myModule.myFunction = function (a,b) {
    return a + b;
};
exports = myModule;
在vscode存储库中提交了一个问题


我将更新我的答案,如果这改变了。

在一个旁注:你是否考虑使用Type Script?它是一个开源的JavaScript项目,我不能去定义工作,我尝试用C文件/投影仪使用0.106,去定义似乎只适用于用<代码> var >代码>或<代码>函数< />定义的东西。不适用于全局事物,不适用于使用
this声明的任何事物。
。我想Intellisense也是这样。您是否安装了引用您正在使用的API的应用程序?我在三年半后遇到了同样的问题。你知道这方面有什么进展吗?我想在以后的版本中有所改进,但仍然不是100%,很多类似的问题都在这个线程中联系起来了。这有没有可能被修复?foo=function(){…}在VSC中没有定义,但是function foo(){}doesYes,这很痛苦。我使用的解决方法是:双击选择单词,按Cmd+Shift+F进行搜索,然后手动转到包含定义的文件