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

Bar*_*klı 10 node.js visual-studio-code

我试图在https://code.visualstudio.com/docs/languages/javascript后为nodejs项目设置visual studio代码

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

{
  "compilerOptions": {
    "target": "ES5", //tried ES6 as well
    "module": "commonjs"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

虽然它似乎不适用于vscode 0.9.1.我在自己的模块上没有智能感知.转到定义也不起作用.

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

有没有办法去定义工作?

Bar*_*klı 4

太长了;如果您直接在对象上设置变量/函数,exports它似乎可以工作。


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

exports.myFunction = function (a, b) {
    return a + b;
};
Run Code Online (Sandbox Code Playgroud)

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

var myModule = {};
myModule.myFunction = function (a,b) {
    return a + b;
};
exports = myModule;
Run Code Online (Sandbox Code Playgroud)

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

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

如果情况发生变化,我会更新我的答案。