我有一个NodeJs项目,并使用nodemon运行它,
我希望以调试模式运行它以完成开发任务,但我无法这样做。
我发现我需要在.vscode文件夹下的launch.json文件中添加正确的配置,
我有一个StatefulWidget
文件,它是主应用程序文件。
应用程序可以在app.js
和node version 4.6.2
上运行。
通常情况下,我使用Port 8080
命令运行该应用。
以下是我的launch.json文件-
npm run dev
package.json如下-
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "MyApp",
"program": "${workspaceFolder}/app.js",
"runtimeVersion": "4.6.2",
"protocol": "legacy",
"port": 8080
//"runtimeExecutable": "/home/user/.nvm/versions/node/v4.6.2/bin/node"
},
{
"type": "node",
"request": "launch",
"name": "nodemon",
"runtimeExecutable": "nodemon",
"program": "${workspaceRoot}/app.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"runtimeVersion": "4.6.2",
"protocol": "legacy",
"port": 8080
},
{
"type": "node",
"request": "launch",
"name": "DEBUG",
"runtimeExecutable": "nodemon",
"program": "${workspaceFolder}/app.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"runtimeVersion": "4.6.2",
"protocol": "legacy",
"port": 8080
}
]
}
当我运行DEBUG和nodemon配置时,该应用程序启动,
但是代码并没有在我放置在app.js文件上的断点处暂停。
参考链接-
1. https://github.com/Microsoft/vscode-recipes/tree/master/nodemon
2. https://github.com/bdspen/nodemon_vscode
3. Can Visual Studio Code be configured to launch with nodemon
4. Cannot debug in VSCode by attaching to Chrome
5. https://code.visualstudio.com/docs/editor/debugging
package.json中需要进行哪些更改,或者Launch配置中需要进行任何更正-launch.json,这将有助于我为用例调试VSCode中的应用程序?
答案 0 :(得分:2)
将package.json更改为
"scripts": {
"dev": "node app.js",
"debug": "nodemon --inspect app.js"
}
-检查版本> = 6.3。 --legacy或--auto for older versions
然后将launch.json发送到:
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Node: Nodemon",
"processId": "${command:PickProcess}",
"restart": true,
"protocol": "inspector"
}
]
重启标志是这里的关键。
通过新的调试脚本启动应用
npm运行调试
答案 1 :(得分:2)
您可以启动并附加带有F5的nodemon,但是需要更多的设置。
我们必须首先通过VS Code任务预启动Nodemon,然后再附加。
我正在使用远程调试器进行附加,因为它不需要额外的单击来选择要附加的流程,并且VS Code流程选择器当前是broken in WSL2,这是我的主要开发环境。
tasks.json(来自this answer):
{
"version": "2.0.0",
"tasks": [
{
"label": "npm dev",
"type": "npm",
"script": "dev",
"isBackground": true,
// This task is run before some debug tasks.
// Problem is, it's a watch script, and since it never exits, VSCode
// complains. All this is needed so VSCode just lets it run.
"problemMatcher": [
{
"pattern": [
{
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern": ".",
"endsPattern": "."
}
}
]
}
]
}
launch.json:
{
"type": "node",
"request": "attach",
"name": "Launch & Attach",
"restart": true,
"localRoot": "${workspaceRoot}",
"remoteRoot": "${workspaceRoot}",
"preLaunchTask": "npm dev"
}
在npm开发脚本中(对于节点> = 6.9):
nodemon --watch src -e js --exec node --inspect .
注意-如果您的过程开始时间超过10秒,则此方法将不起作用。 在这种情况下,您必须弄清楚在启动前任务完成后如何向VS Code发出信号。这可能可以通过使用beginPattern / endPattern正则表达式来实现,尽管我还没有尝试过。
答案 2 :(得分:1)
在vscode配置中,您可以设置runtimeExecutable
来运行给定的程序。设置restart:true
,以便vs代码调试器可以重新启动该过程。
这是一个示例配置:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "nodemon",
"runtimeExecutable": "nodemon",
"program": "${workspaceFolder}/bin/www",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"env": {
"debug": "app:*",
}
}
]
}
比将调试器附加到正在运行的节点进程要容易。保持类型
答案 3 :(得分:0)
nodemon监听文件更改,并通过另一个过程
重新启动应用程序因此您的配置是正确的,但是调试器永远不会“看到”断点。
使用nodemon运行调试模式毫无意义。
这是您可能要在VScode上请求的功能(更改代码后自动重新启动)
答案 4 :(得分:0)
我遇到了与Dockerized nodemon进程相关的类似问题。我在will create a Spring Test Context中找到了解决方案。我可以通过更改以下三项使其工作:
--inspect=0.0.0.0
(在我的情况下,命名为debug
) "scripts": {
"debug": "nodemon -w lib -w server.js --inspect=0.0.0.0 server.js"
}
docker-compose
,所以它是在相关的yaml中定义的:ports:
- "8080:8080"
- "9229:9229"
launch.json
添加以下配置: "configurations": [
{
"name": "Attach to Node in Docker",
"type": "node",
"address": "localhost",
"port": 9229,
"request": "attach",
"restart": true
}
]
"restart": true
选项允许调试器在监视文件更改后nodemon重新编译内容时自动重新附加。