我使用“永远”来运行我的应用程序。我想附加到运行环境来检查我的应用程序。那么我能做什么呢?
7 回答
来自http://nodejs.org/api/debugger.html:
高级用法
可以通过使用 --debug 命令行标志启动 Node 或使用 SIGUSR1 向现有 Node 进程发送信号来启用和访问 V8 调试器。
找到您的进程的 PID,node
然后发送SIGUSR1
应该可以解决问题:
kill -s SIGUSR1 nodejs-pid
然后运行node-inspector
并浏览到它指示的 URL。本教程中的更多内容。
从Node 6.3开始,node 有一个内置的调试器,可以通过执行以下操作来触发(即使在生产应用程序中):
kill -USR1 <node-pid>
节点进程会吐出如下内容:
Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
- 如果您可以从浏览器访问服务器,则可以使用
chrome://inspect
onhttp://host.domain:9229
。 如果您无法通过浏览器连接(例如,服务器位于防火墙生产集群中),您可以激活 REPL 以通过命令行进行检查:
node inspect -p <node-pid>
- 如果您无法从浏览器访问服务器,但您可以通过 SSH 连接到该服务器,然后设置 SSH 端口转发 ( ),几秒钟后
ssh -nNTL 9229:localhost:9229 <username>@<your_host> -i <keyfile>.pem
您将在下面找到您的脚本。chrome://inspect
在此版本之前,它node-inspector
是用于调试 Node 进程的单独工具。但是,正如它自己的页面上所记录的那样,它大多已被弃用,因为现在捆绑的调试器得到了积极维护并提供了更高级的功能。有关此更改的更多信息,请参阅此线程。
Windows 用户
/编辑 2022
这是我目前使用的,在settings.json中配置。这将提示您选择一个进程,它会自动向它发送调试信号。阅读下面的更多内容以了解正在发生的事情。
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Process (Pick)",
"type": "node",
"request": "attach",
"processId": "${command:PickProcess}",
"port": 9229,
}
]
},
之前
如果您在不支持 POSIX 信号的 Windows 上,您可以从另一个 cmd
.
node -e "process._debugProcess(PID)"
如需详细指南,或在 VSCode 中设置调试,请按照以下简单步骤操作:
- 在 VSCode 中,
launch.json
通过单击滚轮打开配置或新建
(这是调试视图CtrlShiftD)
- 节点默认会监听 9229 端口,所以添加这个配置:
{
"type": "node",
"request": "attach",
"name": "Attach to 9229",
"port": 9229
},
- 打开任务管理器并找到你的节点进程的PID,我可以通过它所在的文件夹
来识别我的。"build"
index.js
- 打开另一个
cmd
或git-bash
并运行此命令,您的进程的PID在
哪里。21392
node -e "process._debugProcess(21392)"
现在一切都应该准备好了。
对我来说,运行节点版本 6.9.10 我必须:
kill -USR1 <node-pid>
然后
node debug -p <node-pid>
此版本节点的node inspect -p <node-pid>
命令失败。
即使这是一个古老但已回答的问题,也有一种更简单的方法,即将参数传递给节点:
forever start -c 'node --debug-brk' main.js
如果您不想等待附加调试器,请替换--debug-brk
为--debug
要检查 nodejs 并对其进行调试,请使用此命令
forever -w -c 'node --inspect=IP:PORT' file.js
- -c如果用于自定义命令
- 如果文件被重新保存,使用-w 重新加载
- 您可以通过 ip 和端口进行外部检查
- 端口自定义为9229