配置launch.JSon文件是vscode调试node.js应用的核心,需在项目根目录的.vscode文件夹中创建并设置调试参数;2. 基础配置包括指定type为node、request为launch、正确设置program入口文件路径,并可配置env环境变量和console输出方式;3. 调试带参数的程序时,在launch.json中添加args数组传入命令行参数;4. 调试使用nodemon的程序需将request设为attach,启动nodemon –inspect后通过pickprocess选择进程附加;5. 调试typescript程序需在launch.json中设置prelaunchtask执行tsc编译任务,启用sourcemaps并指定outfiles路径,同时配置tasks.json和tsconfig.json支持编译和sourcemap生成;6. 遇到”cannot connect to runtime process”错误时,应检查端口冲突、防火墙设置、node.js版本、是否启用–inspect及launch.json配置正确性;7. 调试时可通过variables面板查看变量、watch面板监控表达式、调试控制台执行和修改变量值,以及悬停提示快速查看变量内容,从而高效定位和解决问题。
VSCode调试Node.js应用的核心在于配置launch.json文件,指定调试环境和入口文件。配置正确,就能在VSCode里打断点,单步调试,爽歪歪。
配置VSCode调试Node.js的完整流程:
-
创建.vscode/launch.json文件: 在你的Node.js项目根目录下,如果还没有.vscode文件夹,就新建一个。然后在.vscode文件夹里创建一个launch.json文件。
-
配置launch.json: 打开launch.json文件,复制粘贴下面的配置。当然,根据你的项目情况,需要修改一些地方。
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/app.js", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "env": { "NODE_ENV": "development" } } ] }
* `"type": "node"`: 指定调试类型为Node.js。 * `"request": "launch"`: 指定启动调试。 * `"name": "Launch Program"`: 调试配置的名称,随便起,方便你自己识别就行。 * `"program": "${workspaceFolder}/app.js"`: 指定要调试的入口文件。 `${workspaceFolder}` 表示当前项目根目录。 `app.js` 改成你的入口文件名字。 如果你的入口文件在其他目录,比如`src/index.js`,那就改成`"${workspaceFolder}/src/index.js"`。 * `"console": "integratedTerminal"`: 指定控制台输出到VSCode的集成终端。 * `"internalConsoleOptions": "neverOpen"`: 不要打开内部控制台。 * `"env": { "NODE_ENV": "development" }`: 设置环境变量。 `NODE_ENV` 设置为`development`,方便你区分开发环境和生产环境。
-
设置断点: 在你想要调试的代码行号旁边,单击一下,就可以设置断点。 VSCode会在行号旁边显示一个红点。
-
启动调试: 按下F5键,或者点击VSCode左侧的调试图标(像一个播放按钮),就可以启动调试。
-
调试: 程序会在断点处停下来。 你可以使用VSCode提供的调试工具栏,进行单步调试、跳过、继续、重启等操作。 你也可以在VSCode的调试控制台中查看变量的值。
如何调试带参数的Node.js程序?
如果你的Node.js程序需要接收命令行参数,你需要在launch.json文件中添加args配置。 例如:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program with Arguments", "program": "${workspaceFolder}/app.js", "args": ["--port", "3000", "--debug"], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "env": { "NODE_ENV": "development" } } ] }
“args”: [“–port”, “3000”, “–debug”]: 指定传递给程序的命令行参数。 –port 和 –debug 是参数名,3000 是 –port 参数的值。 根据你的程序需要,修改参数列表。
如何调试使用nodemon的Node.js程序?
如果你使用nodemon来自动重启Node.js程序,你需要修改launch.json文件,使用”request”: “attach”配置。 首先全局安装nodemon:
npm install -g nodemon
然后,修改launch.json:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "attach", "name": "Attach to Process", "processId": "${command:PickProcess}", "restart": true, "port": 9229 } ] }
* `"request": "attach"`: 指定附加到正在运行的进程。 * `"processId": "${command:PickProcess}"`: 指定要附加的进程ID。 VSCode会在启动调试时,弹出一个列表,让你选择要附加的Node.js进程。 * `"restart": true`: 如果nodemon重启了程序,VSCode会自动重新附加。 * `"port": 9229`: nodemon 默认的调试端口。
启动调试前,先用nodemon启动你的Node.js程序:
nodemon --inspect app.js
然后,在VSCode中按下F5,选择要附加的Node.js进程。
如何调试typescript编写的Node.js程序?
调试TypeScript编写的Node.js程序,需要先将TypeScript代码编译成JavaScript代码。 你可以使用tsc命令或者构建工具(比如webpack、rollup)来编译TypeScript代码。
然后,在launch.json文件中,指定编译后的JavaScript文件作为入口文件。 例如:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program (TypeScript)", "program": "${workspaceFolder}/dist/app.js", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "preLaunchTask": "tsc: build", // 编译 TypeScript "sourceMaps": true, "outFiles": [ "${workspaceFolder}/dist/**/*.js" ] } ], "compounds": [] }
- “program”: “${workspaceFolder}/dist/app.js”: 指定编译后的JavaScript文件作为入口文件。 dist 是编译输出目录。
- “preLaunchTask”: “tsc: build”: 在启动调试之前,先执行一个任务。 tsc: build 是任务的名称。 你需要在.vscode/tasks.json文件中定义这个任务。
- “sourceMaps”: true: 启用 sourcemap,方便调试 TypeScript 源代码。
- “outFiles”: [“${workspaceFolder}/dist/**/*.js”]: 指定输出文件位置,用于 sourcemap 查找。
在.vscode文件夹下创建tasks.json文件,并添加以下内容:
{ "version": "2.0.0", "tasks": [ { "type": "typescript", "tsconfig": "tsconfig.json", "problemMatcher": [ "$tsc" ], "group": "build", "label": "tsc: build" } ] }
确保你的tsconfig.json文件配置正确,指定了输出目录和sourcemap选项。 例如:
{ "compilerOptions": { "target": "es6", "module": "commonjs", "outDir": "./dist", "sourceMap": true, "strict": true, "esModuleInterop": true }, "include": ["src/**/*"] }
- “outDir”: “./dist”: 指定输出目录为./dist。
- “sourceMap”: true: 生成sourcemap文件。
调试时遇到”Cannot connect to runtime process”错误怎么办?
这个错误通常是由于以下原因导致的:
-
端口冲突: 调试端口被其他程序占用。 你可以尝试修改launch.json文件中的”port”配置,使用一个未被占用的端口。
-
防火墙阻止连接: 防火墙阻止了VSCode和Node.js进程之间的连接。 你需要配置防火墙,允许VSCode和Node.js进程之间的通信。
-
Node.js版本过低: 某些版本的Node.js可能不支持调试功能。 你可以尝试升级Node.js到最新版本。
-
–inspect参数未启用: 使用nodemon调试时,如果启动命令中没有添加–inspect参数,也会导致无法连接。
-
错误的launch.json配置: 仔细检查launch.json文件,确保配置正确。 特别是”program”、”args”、”processId”等配置。
如何使用VSCode调试器查看和修改变量值?
在调试过程中,VSCode提供了强大的变量查看和修改功能。
-
Variables面板: 在VSCode的调试侧边栏,有一个”Variables”面板,显示当前作用域内的所有变量及其值。你可以展开对象和数组,查看它们的属性和元素。
-
Watch面板: 在VSCode的调试侧边栏,还有一个”Watch”面板,你可以添加表达式,VSCode会实时计算表达式的值。 这对于查看复杂的表达式或者特定属性的值非常有用。
-
调试控制台: 在VSCode的调试控制台中,你可以输入表达式,VSCode会计算表达式的值并显示出来。 你也可以使用调试控制台来修改变量的值。 例如,你可以输入a = 10来将变量a的值修改为10。
-
悬停提示: 在调试过程中,你可以将鼠标悬停在变量上,VSCode会显示变量的值。
掌握这些技巧,你就能像使用魔法一样,轻松调试Node.js应用程序,快速定位和解决问题。