如何调试NodeJS
调试是开发过程中不可或缺的一部分,尤其是在构建复杂的 Node.js 应用时,面对异步调用、事件循环和多进程等特性,调试显得尤为重要。相比浏览器端的调试,Node.js 的调试需要更细致的控制和工具支持。幸运的是,VS Code 和其他现代工具为开发者提供了强大的调试功能,从断点设置到远程调试,都让问题排查变得更加高效
在这篇文章中,我们将深入探讨如何使用 VS Code 及其他工具调试 Node.js 应用,并结合实例演示不同场景下的调试技巧,帮助开发者轻松应对调试难题
小贴士
若您在阅读本篇文章前还没有读过我的调试大全系列文章,强烈推荐您先去看看 vscode调试 和其他文章
命令行调试
Node.js 提供了命令行调试选项,可以帮助开发者在各种环境下快速定位和解决问题,在运行node服务式使用--inspect
或 --inspect-brk
,可以快速调试一些小项目
node --inspect http.js
# 或
node --inspect-brk http.js
2
3
此时node就会启动debug模式,生成一个ws服务,你可以选择Chrome Devtools
或 VSCode
图形界面链接到当前wes服务,就可以进行调试了
使用vscode:
使用Chrome Devtool:
Debugger Terminal
VSCode提供了Javascript Debug Terminal
更加傻瓜式的调试方式,简直有手都会系列‼️让我们来看看怎么个简单法
只需要打开Javascript Debug Terminal
终端,然后像往常一样启动程序一样:
打开对应的终端
启动程序
npm脚本调试
在 Visual Studio Code(VSCode)中,Debug Configuration(调试配置)是调试功能的核心。它允许开发者根据项目需求自定义调试环境、参数和行为。调试配置通常存储在项目的 .vscode/launch.json
文件中,通过 JSON 格式定义调试任务
创建launch.json
文件有多种方式,支持手动、可视化等等,你可以打开Debug
扩展,然后根据提示创建对应的文件:
在实际项目中通常都会涉及到相关编译启动脚本,如使用NestJS搭建的node项目等等,那么使用runtimeExecutable
用于指定调试程序的运行时可执行文件,该字段通常用于指定运行调试目标所需的特定运行环境,例如 Node.js 的可执行文件、Python 解释器或其他自定义的可执行程序
{
"type": "node",
"request": "launch",
"name": "Test Launch Debugger",
"skipFiles": [
"<node_internals>/**"
],
"cwd": "${workspaceFolder}/node",
"args": ["author=ihengshuai"],
"runtimeExecutable": "npm", // 使用npm启动
"runtimeArgs": ["run", "debug", "github=ihengshuai"], // npm 后面的参数, npm run debug
"env": { "website": "https://blog.usword.cn" }
}
2
3
4
5
6
7
8
9
10
11
12
13
更多调试技巧
读者可以阅读往期文章 vscode调试技巧 了解更多的调试技巧和场景
总结
在命令行环境中,Node.js 内置调试器让开发者可以轻量化地完成调试任务,尤其适合快速定位小范围的问题。而借助 VS Code 和 Chrome DevTools 的图形化界面,开发者能够直观地设置断点、监视变量、分析调用栈,甚至诊断内存泄漏和性能瓶颈。此外,对于远程调试场景,Node.js 的 inspect
协议和工具支持也提供了便捷的解决方案
不同场景下的调试需求,例如多进程、多线程和异步问题等,都能通过合理使用调试工具和方法得到解决。通过 VSCode的 luanch.json
等调试选项,开发者可以灵活应对复杂场景。而深入理解 Node.js 事件循环、异步执行机制以及线程池的运行原理,也是高效调试的关键