用 VSCode 调试 Node.js
- 选择一个文件启动。选择﹝Run Current File﹞会将当前文件作为入口进行启动,本质是
node xx.js
- 命令行启动。选择﹝JavaScript Debug Terminal﹞,VSCode 中会打开一个终端,在里面启动命令如
node xx.js
,自动进行 Debugger attached - npm scripts 命令启动。选择﹝Node.js...﹞,然后会展示所有 package.json 里的 scripts 命令,选择一个进行启动
1 用于调试简单的单文件比较方便,3 用于大型比较正式的有 package.json 的项目(配置了 scripts)
以上这些不需要配置文件,启用配置文件可以定制化更多内容,选择﹝添加配置...﹞
本质是配置 .vscode/launch.json
文件,而这个文件的本质是能提供多个启动命令入口选择
- ﹝Node.js: Attach﹞看起来是指定 port 进行 attach,但是我没尝试成功
- ﹝Node.js: Attach to Process﹞指定进程进行 attach(比如已经用 npm 命令启动了服务)
- ﹝Node.js: Launch Program﹞新建一个 launch
- ﹝Node.js: Launch via npm﹞用 npm 的启动方式新建个 launch
好处是可以自己配置些东西,比如 skipFiles(默认调试会进入到 node_modules 目录,可以指定忽略)
program
控制启动文件的路径(即入口文件)name
下拉菜单中显示的名称(该命令对应的入口名称)request
分为 launch(启动)和 attach(附加)(进程已经启动)skipFiles
指定单步调试跳过的代码runtimeExecutable
设置运行时可执行文件,默认是 node,可以设置成 nodemon,ts-node,npm 等
一个 skipFiles
示例:
"skipFiles": [
"${workspaceFolder}/node_modules/**/*.js", // 跳过 node_modules
"${workspaceFolder}/lib/**/*.js", // 跳过 lib
"<node_internals>/**/*.js" // 跳过 node 核心模块
]
如果打印 没有可用的调试程序,无法发送“variables”
,可以打个断点