Node.js调试流程
Node.js Debugging flow
我想像 rails 一样调试 node.js。
我尝试了几种方法:
- Webstorm 调试 – 在这种情况下,每次更改代码后我都需要单击 "rerun debug"
- 带有 chrome 远程调试器的 Nodemon – 在这种情况下,每次由 nodemon
重新加载代码后,我都需要重新连接到调试器
- pry.js – 在这里我需要输入 "eval(pry.it)" – 没有选项可以让它更简单,比如 "debug" 或 pry()
那么对于 rails 调试节点应用程序(如 byebug)的最佳选择是什么?
升级:
感谢@AbhinavD 我已经在 VSCode 中做到了:
首先你需要编辑 app/.vscode/launch.js
javascript
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Node: Nodemon",
"processId": "${command:PickProcess}",
"restart": true,
"protocol": "inspector",
},
]
}
所以现在 nodemon 在更改后重新启动服务器并 VSCode 自动重新连接到调试器。
观看视频https://vimeo.com/267975071
有没有人能在 WebStorm 中做到这一点?
回答你的问题:没办法。不幸的是,使用 Node.js,您在更改代码时总是必须重新启动调试会话。
I've recently written an article 关于使用不同工具调试 JavaScript 和 TypeScript,如果您有兴趣,但没有什么比实时调试更好的了。
我不确定 byebug
是如何工作的。但是,如果您使用 VSCode 和 nodemon(全局安装),VSCode 可以将自身重新附加到 运行 进程,并将在调试器中的同一点中断。
这是我的配置文件的样子
{
"name": "Launch server.js via nodemon",
"type": "node",
"request": "launch",
"runtimeExecutable": "nodemon",
"program": "${workspaceFolder}/joiValidation.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
这是small video I made from my debugging. Official documentation
现在升级后效果很好。 [23/09/2018]
要进行配置,您需要拥有 Webstorm 2018。2 并按照以下步骤操作:
和还包括"Attach to Node.js/Chrome"[+]的选项如下:
要使调试器在每次更改后重新启动,您必须启用 [x] 自动重新连接 选项。
使用调试的流程是:
- 运行 你的(在我的例子中)Nodemon。
- Debug 你的(在我的例子中)NodemonDebugger
- 设置断点和其他一切,一切顺利。
Note: If you are going direct to the debugger instead (and therefore
not following this process) one would probably be expecting a
termination of the process after changing the code lines.
我想像 rails 一样调试 node.js。 我尝试了几种方法:
- Webstorm 调试 – 在这种情况下,每次更改代码后我都需要单击 "rerun debug"
- 带有 chrome 远程调试器的 Nodemon – 在这种情况下,每次由 nodemon 重新加载代码后,我都需要重新连接到调试器
- pry.js – 在这里我需要输入 "eval(pry.it)" – 没有选项可以让它更简单,比如 "debug" 或 pry()
那么对于 rails 调试节点应用程序(如 byebug)的最佳选择是什么?
升级:
感谢@AbhinavD 我已经在 VSCode 中做到了:
首先你需要编辑 app/.vscode/launch.js
javascript
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Node: Nodemon",
"processId": "${command:PickProcess}",
"restart": true,
"protocol": "inspector",
},
]
}
所以现在 nodemon 在更改后重新启动服务器并 VSCode 自动重新连接到调试器。
观看视频https://vimeo.com/267975071
有没有人能在 WebStorm 中做到这一点?
回答你的问题:没办法。不幸的是,使用 Node.js,您在更改代码时总是必须重新启动调试会话。
I've recently written an article 关于使用不同工具调试 JavaScript 和 TypeScript,如果您有兴趣,但没有什么比实时调试更好的了。
我不确定 byebug
是如何工作的。但是,如果您使用 VSCode 和 nodemon(全局安装),VSCode 可以将自身重新附加到 运行 进程,并将在调试器中的同一点中断。
这是我的配置文件的样子
{
"name": "Launch server.js via nodemon",
"type": "node",
"request": "launch",
"runtimeExecutable": "nodemon",
"program": "${workspaceFolder}/joiValidation.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
这是small video I made from my debugging. Official documentation
现在升级后效果很好。 [23/09/2018]
要进行配置,您需要拥有 Webstorm 2018。2 并按照以下步骤操作:
和还包括"Attach to Node.js/Chrome"[+]的选项如下:
要使调试器在每次更改后重新启动,您必须启用 [x] 自动重新连接 选项。
使用调试的流程是:
- 运行 你的(在我的例子中)Nodemon。
- Debug 你的(在我的例子中)NodemonDebugger
- 设置断点和其他一切,一切顺利。
Note: If you are going direct to the debugger instead (and therefore not following this process) one would probably be expecting a termination of the process after changing the code lines.