神光《Nest 通关秘籍》学习总结-如何用vscode调试Nest代码

5,874 阅读2分钟

最近在学习神光大神的《Nest通关秘籍》,该小册主要包含下面这些内容:

image.png 现在购买还有优惠,《传送门

接下来的日子里,我将更新一系列的学习笔记。感兴趣的可以关注我的专栏《Nest 通关秘籍》学习总结

特别申明:本系列文章已经经过作者本人的允许。 大家也不要想着白嫖,我的笔记只是个人边学习边记录的,不是很完整,大家想要深入学习还是要自己去购买原版小册。

本节我们学习如何用vscode来调试Nest代码。

当然在这之前,神光大神已经出过关于《前端调试通关秘籍》,教你如何掌握 VSCode Debugger + Chrome DevTools + Charles,全面提升调试能力!

一、在浏览器调试

1.1 调试node

node --inspect-brk index.js

--inspect 是调试模式运行,而 --inspect-brk 还会在首行断住。 node测试代码如下:

const a = 1
const b = 2
let c = a + b
console.log(c)

运行node --inspect-brk index.js 在浏览器打开chrome://inspect/#devices,点击调试的项目代码,如果没有,就配置下 network target,加上 localhost:9229 image.png 就会新开一个浏览器 image.png 并且在vscode中生打开断点调试 image.png

1.2 调试nest

在nest中,运行npm run start:debug 我们需要在 controller 里加个 debugger,然后访问下 http://localhost:3000, 再点击inspect,这时候你会发现代码在断点处断住了: image.png 然后你就可以愉快的进行断点调试了。

二、在vscode调试

2.1 调试node

还是以node.js代码为示例:

const a = 1
const b = 2
let c = a + b
console.log(c)

点击调试面板的 create launch.json file,它会创建 .vscode/launch.json 的调试配置文件: image.png image.png 然后添加node配置 image.png 配置修改如下:

{
  // 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": "Launch Program",
      "program": "${workspaceFolder}/index.js",
      "request": "launch",
+     "stopOnEntry": true,
      "skipFiles": [
        "<node_internals>/**"
      ],
      "type": "node"
    }
  ]
}

这里的stopOnEntry就像--inspect-brk一样的效果,会在首行断住。 运行node --inspect-brk index.js 就可以进行调试了 image.png

2.2 调试nest

运行nest start --debug或者npm run start:debug 添加一个 attach 类型的调试配置: image.png 在controller中加一个断点 image.png 然后浏览器中进行访问接口:http://localhost:3000/ 就可以在vsocde中调试断点了。如果无效,重新运行一下nest start --debug image.png 除此之外,还可以运行npm脚本命令的方式逆行调试, 创建一个via npm的方式 image.png 然后调整配置如下:

{
  "type": "pwa-node",
  "request": "launch",
  "name": "debug nest",
  "runtimeExecutable": "npm",
  "args": [
    "run",
    "start:dev",
  ],
  "skipFiles": [
    "<node_internals>/**"
  ],
  "console": "integratedTerminal",
}

解释一下:

  • runtimeExecutable:代表执行什么命令
  • args:后面带的命令
  • consoleintegratedTerminal用 vscode 的内置终端来打印日志

然后点击调试模式启动,也就是运行了npm run start:dev 然后浏览器访问 http://localhost:3000 image.png 这样就可以调试了。这是最方便的调试 nest 项目的方式。