调试NodeJS应用

本文介绍了如何调试不同类型的NodeJS应用,包括使用node启动、npm启动和在docker容器中的应用。重点讲解了开启调试端口,特别是远程调试,适用于所有场景。调试工具包括VSCode和Chrome,详细阐述了在VSCode中配置launch.json进行远程调试,以及Chrome通过chrome://inspect/页面进行调试。同时提到了npm启动应用时package.json的debug选项和docker-compose.yaml的配置修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于不同的NodeJS应用,调试方式略有差异,这里分为三类:

  1. 使用node启动的应用;
  2. 使用npm启动的应用;
  3. 运行在docker容器中的NodeJS应用;

开启调试端口

这里主要介绍远程调试,因为对上面3种场景都适用。
通过启动应用的调试端口,默认是9229。让应用处于可调试状态,再使用调试工具attach上去。

  1. node启动的应用
    可以配合使用--inspect--inspect-brk参数,启动程序。
node --inspect app.js

传送门:
https://nodejs.org/en/docs/guides/debugging-getting-started/
这里也介绍了多种调试工具,后面我们主要以VSCode和Chrome为工具。

  1. npm启动的应用
    使用npm启动的应用,需要package.json设置相应的配置。下面是使用Chair生成的应用所对应的package.json。
  "scripts": {
    "start": "egg-scripts start --daemon --title=egg-server-demo",
    "stop": "egg-scripts stop --title=egg-server-demo",
    "dev": "egg-bin dev",
    "debug": "egg-bin debug",
    "test": "npm run lint -- --fix && npm run test-local",
    "test-local": "egg-bin test",
    "cov": "egg-bin cov",
    "lint": "eslint .",
    "ci": "npm run lint && npm run cov",
    "autod": "autod"
  },

其中,debug选项就是用于调试的,可以使用下面的命令启动调试。

npm run debug

传送门:
https://docs.npmjs.com/cli/v7/commands/npm-run-script
https://github.com/eggjs/egg-bin

  1. 在docker中运行的应用
    在docker-compose.yaml文件中,增加调试端口和修改命令,如下:
    在这里插入图片描述

使用docker-compose up启动容器中的应用。

传送门:
https://code.alipay.com/dupei.dp/AntNodeGoat/blob/master/docker-compose.yaml

远程调试

  1. VSCode
    如果使用VSCode调试,参考下面的传送门设置VSCode的调试配置,修改launch.json中的配置信息如下:
"configurations": [
  {
    "address": "localhost", // 远程机器的IP
    "localRoot": "${workspaceFolder}",
    "name": "Attach to Remote",
    "port": 9229,
    "remoteRoot": "${workspaceFolder}", // 这里设置成远程机器上的根目录,这里是在本地启动
    "request": "attach",
    "skipFiles": [
      "<node_internals>/**"
    ],
    "type": "pwa-node"
  }
]

这些信息是可以通过"Add Configuration…"中,选择"Node.js: Attach to Remote Program"添加框架信息,并在此基础上修改。

(1) 可以直接在package.json的script那里点击debug按钮启动调试
在这里插入图片描述

(2)也可以先使用下面的脚本启动应用

> npm run debug
...
9230 opened
Debug Proxy online, now you could attach to 9999 without worry about reload.
DevTools → chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9999/__ws_proxy__
...

再使用工具(VSCode或者Chrome)attach上去。

使用VSCode attach的方法如下:
在这里插入图片描述

传送门:
https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_remote-debugging

  1. Chrome
    使用Chrome attach,可以在Chrome浏览器的导航栏输入:chrome://inspect/
    在这里插入图片描述
    在这里插入图片描述

这里需要注意一下,Discover network targets的配置中,需要根据开启的端口做调整。以上面使用npm启动Chair应用为例。

> npm run debug
...
9230 opened
Debug Proxy online, now you could attach to 9999 without worry about reload.
DevTools → chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9999/__ws_proxy__
...

默认的9229端口是不行的,而9230/9999这两个端口测试都可以。

一旦工具连接上调试端口,会有下面的log出现。

Debugger attached.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值