nodejs调试
1. 使用node-inspector(已过时)
使用npm安装:
$ npm install -g node-inspector
然后需要通过浏览器连接到node-inspector,需要启动inspector服务:
$ node-inspector &
最后以debug模式运行node.js应用:
$ node --debug app.js
通过URL http://127.0.0.1:8080/debug?port=5858 就可以进行调试了
2. 使用node命令直接连接chrome
Node.js 提供 Inspector Protocol 调试协议来支持调试。
简单来说,在运行 Node.js 程序时开启一个进程来监听调试请求,默认的监听端口是 9229。每个监听进程都被分配了唯一的 UUID,调试客户端通过 ws://{host}:{port}/{UUID}
和监听进程建立 websocket 通信。
Node.js 开启调试服务被动等待,调试客户端主动发起对接。
启动时开启调试服务
Node.js 调试服务默认关闭,需要通过 --inspect 或 --inspect-brk 标识符开启,服务的默认端口和地址也可通过 node --inspect=[host:port] 指定。
node --inspect index.js 开启调试服务,端口为 9229
node --inspect=3003 index.js 开启调试服务,端口为 3003
node --inspect=192.168.0.101 开启调试服务,地址为 192.168.0.101:9229
node --inspect=192.168.0.101:3003 开启调试服务,连接地址为 192.168.0.101:3003
那么,--inspect 和 --inspect-brk 有什么不同?
--inspect-brk 会在代码首行停住。
--inspect 启动调试服务,跑完程序就退出。除非是有异步任务在,不然完全不给调试器对接的机会。
--inspect-brk 启动完调试服务就停在首行,等着调试器接入,接入后断在第一行代码等待下一步操作。
对于 node 命令之外的启动脚本,例如 npm/yarn/vercel/next。--inspect 是 Node.js 的标识符,其他脚本无法识别,这种情况可以设置变量 NODE_OPTIONS 来解决。
NODE_OPTIONS='--inspect' vercel dev
调试客户端(Inspector client)
Node 内置命令行调试器,通过 node inspect 命令执行,通过输入命令来描述行为不如可视化操作高效,可视化调试器必不可少。
目前主流的 IDE 几乎都已经内置 Node.js 调试客户端,例如前端领域最常用的 VSCode、WebStorm、Chrome DevTool。
Chrome DevTools 会根据地址列表自动检查调试服务启动情况,默认地址有本地的 9229 和 9222 端口。chrome://inspect 面板负责调试管理。
调试命令
node --debug/--debug-brk (node8.0之前)
node --inspect/--inspect-brk (node8.0之后)
带-brk,会默认停止在第一行,可以继续调试。不带,则会一下子执行完,若只是执行一段代码,没有线程持续运行,则会很快执行完毕,没有机会去调试
启动之后,打开chrome的开发者工具,左侧有个Node.js的绿色菱形图标,点击就可以进入调试。
如果node线程已经启动,可以通过附加到进程来调试:
ps ax | grep app.js 查看进程号
node -e 'process._debugProcess(进程号)' 附加到该进程进行调试
node的调试服务(ws服务端)启动之后,用chrome devtools的客户端可以连接,具体可以:
打开 chrome://inspect 的 url 就会看到这个可以连接的 target
3. 使用 visual studio code
打开调试面板,添加koa-template对应的launch.json配置文件。其中:
Run Script: dev:以npm run dev启动,附加到node进程调试,不能自行用npm run dev启动,必须从这里启动
Launch: nodemon: 以nodemon启动,支持热修改和调试,不能自行启动
Attach: Nodemon: 对已启动的nodemon进程进行附加调试,对已用npm run dev启动的项目,可以从这里调试
VSCode调试方法:
1. 项目根目录下加一个 .vscode/launch.json 的文件
2. 类型选择 attach,lanuch文件中的port选择用inspect启动的node调试服务的端口(命令行有输出),或者
直接 launch program,这样不用单独启动node inspect服务,vscode会自动启动服务并连接上,进行调试
具体可参考:Node.js 调试一路走来经历了什么
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具