必须用调试器连接已监听的Node.js进程才能调试,否则断点无效;需确认进程启动时含--inspect参数并记下端口,再通过chrome://inspect或WebStorm Attach方式连接,最后在Sources面板设断点验证。
要调试已经启动、正在后台持续运行的Node.js服务,不能重新执行带--inspect参数的命令,必须让调试器主动连接到已监听的进程,否则断点无法命中、变量无法查看、调用栈为空。
打开终端,执行 ps aux | grep node,查找目标进程的PID和启动命令;若命令中不含--inspect或--inspect-brk,则该进程**未开启调试通道**,必须重启并添加参数——【这是不可跳过的前提】。
若看到类似 node --inspect=0.0.0.0:9229 server.js 或 node --inspect-brk server.js 的启动项,说明调试已启用;注意端口号(如9229、9876等),后续连接时必须完全一致。
若端口绑定为127.0.0.1(默认),则仅本机可连;若需远程调试,启动时须显式指定--inspect=0.0.0.0:9229并确保防火墙放行该端口。
在Chrome地址栏输入 chrome://inspect 并回车。
等待约5–10秒,页面底部“Remote Target”区域将列出已发现的Node.js进程;若长时间不出现,请检查:① Node进程是否确实在监听;② Chrome与Node是否在同一台机器;③ 是否禁用了Chrome的实验性功能(无需开启chrome://flags中的任何选项,新版Chrome已默认支持)。
找到对应项目名称(通常显示为脚本文件名,如server.js),点击右侧的 Inspect 链接——这会打开一个独立的DevTools窗口,专用于Node.js后端调试。
方法一:使用内置运行配置向导
打开 WebStorm → Run → Edit Configurations → 点击左上角 + → 选择 Attach to Node.js/Chrome。
填写以下两项:
主机:若Node在本机,填 localhost;若在Docker容器或远程服务器,填对应IP(如192.168.1.100);
端口:与进程启动时--inspect指定的端口号严格一致,例如9229。
勾选 Auto-reconnect(自动重新连接):当使用nodemon热重载时,此选项能让WebStorm在Node进程重启后自动恢复调试会话,避免每次都要手动重连。
方法二:从终端日志快速复制配置
在Node进程启动终端中,查找形如 Debugger listening on ws://127.0.0.1:9229/xxxx-xxxx-xxxx 的输出行;其中的127.0.0.1:9229即为主机+端口组合,直接粘贴进配置即可——【不要手输端口,易错位】。
第一步:在DevTools的 Sources 面板左侧文件树中,展开 Filesystem → 找到你的项目根目录 → 展开并定位到待调试的JS文件(如server.js)。
第二步:点击行号左侧空白处设置断点;若代码尚未加载,断点会呈灰色空心圆,表示“待命状态”;一旦该文件被执行,断点自动激活为实心红点。
第三步:触发服务请求(如浏览器访问http://localhost:3000),观察执行是否停在断点处;若未暂停,检查:① 断点所在代码路径是否真实被执行;② 是否误设在被压缩/未映射的代码行;③ Node进程是否仍处于--inspect-brk挂起状态(此时需先按F8继续)。
第四步:在 Console 面板中输入 console.log('debug test'),回车执行;若输出立即出现在终端日志中,说明调试通道双向畅通。