在VSCode中调试Nodemon、Node、Typescript?

480 阅读2分钟

前言

最近在用NodeTSExpress开发一个后台接口项目,后台项目的调试比前端浏览器调试稍显复杂些。此次使用VSCode开发项目,VSCode自带调试功能。但是,调试NodeTS项目,问题都比较少。如何配合Nodemon希望一边有热加载效果,一边自动保持调试功能,还是有不少坑点。

接下来,我将配置流程记录一下。

配置Nodemon调试模式

注意:保证你已经下包了ts-nodetypescript,否则会报错ts-node不存在。

{
  "name": "debug-typescript-node-nodemon",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev:debug": "nodemon --exec "node --require ts-node/register --inspect src/app.ts""
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "^2.0.12",
    "ts-node": "^9.1.1",
    "typescript": "^4.4.2"
  }
}

上述第7行代码中,我们启用了--inspect参数,并指定了使用ts-node运行ts文件。

当使用-inspect标志时,调试器将在默认情况下监听端口9229。

此时,运行npm run dev:debug ,你会在终端中看到如下一行的日志:

image.png

这行日志,代表Nodemon在9299端口开启了调试模式。现在要做的,用一个调试终端去连接这个端口即可。VSCode+Node项目中调试终端有两种:

  1. VSCode自带的调试面板
  2. Chrome作为调试终端

VSCode自带调试终端

在根目录创建.vscode/launch.json,配置如下,注意port要指定为9299

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Nodemon: Attach Express.js + TypeScript",
      "type": "node",
      "request": "attach", 
      "port": 9229, // 💥💥与上方提示的端口号保持一致
      "restart": true
    }
  ]
}

使用步骤:

  1. npm run dev:debug 启动项目
  2. 运行调试按钮:

image.png

此时,修改修改代码保存后,可以在新代码处,打断点。

7deede05-3d73-494d-a90d-0ee07485dfc9.gif

大功告成~

Chrome作为调试终端

挖个坑,有空来写