我必须设置错误或对VS Code如何工作有一些误解。当我附加到节点进程时,我无法从源代码中设置断点。
我设置了我的环境变量set NODE_OPTIONS=--debug=5838
。这将允许调试器通过端口5838
连接到我的程序。这适用于node_inspector。
我在命令窗口(VS代码之外)通过npm
启动了我的节点服务器。
我成功连接到节点服务器。
以下是VS Code的attach
设置
{
"name": "Attach to Server",
"type": "node",
"request": "attach",
"port": 5838,
"address": "localhost",
"timeout": 20000,
"sourceMaps": true,
"outFiles": ["${workspaceRoot}/.meteor/local/build/programs/server/**/*.js"],
}
注意:我的workspaceRoot位于E:\project\server
IFF我连接时,我的代码中有debugger;
语句VS代码将打开具有debugger;
语句的文件,我将能够检查我的代码并设置断点这个文件。此文件的文件位置为\1003\file.js
。
注1:我无法在任何其他文件中设置断点,除非我可以通过调试会话启动它。例如,我可以通过选择调用堆栈上的调用者来调出其他文件。但每个文件都来自 origin ,例如\1004\otherfile.js
不是来自${workspaceRoot}
。
注2: Meteor创建了一个巨大的js
文件:app.js
,其中包含我的所有代码。有一个与之关联的地图文件,我玩的是以不同的方式设置我的outFiles
。它设置正确,因为它能够辨别哪个 origin 文件与断点相关联。如果我更改设置,我的断点会显示在app.js
。
注3:我也玩remoteRoot
将其分配给${workspaceRoot}
似乎搞乱了映射,使其无法再找到\1003\file.js
。
node-inspector
一样。 node-inspector
提供了我的源代码树,并记住会话之间的断点。非常好!debugger;
语句就可以设置断点。我必须以某种方式弄乱我的配置。也许调试器无法在我的源代码和 origin 之间建立连接,我必须正确连接?
我一直在阅读有关VS Code的好东西,尤其是调试器,我认为我必须出去吃午饭......
感谢您的任何见解!