使用 TypeScript 的 Node.js,在 VSCode 和 Nodemon 内进行调试
📦依赖项和配置
💻 编写我们的服务器和一些路由
📊 将 Debug 配置附加到我们的项目
🌐 附加功能:它也适用于 Google Chrome DevTools
☕️我想要这一切,甚至更多!
设置 Node.js 和 TypeScript 非常简单。我们的日常工作有时需要大量调试,并且还需要重新加载服务器。
让我们来看看如何在 VSCode 中使用 TypeScript + Nodemon + Debug 设置 Node.js(另外,您还可以在 Chrome DevTools 中对其进行调试)。
少说话,多写代码!🤓
📦依赖项和配置
$ mkdir devto-node-typescript
$ cd $_
添加我们的依赖项:
$ yarn init -y
$ yarn add @types/express@^4.16.1 express@^4.16.4 nodemon@^1.18.10 ts-node@^8.0.3 typescript@^3.3.4000
这是我们的依赖项列表:
@types/express@^4.16.1
express@^4.16.4
nodemon@^1.18.10
ts-node@^8.0.3
typescript@^3.3.4000
现在,让我们创建nodemon.json
文件:
$ touch nodemon.json
$ vim $_
并粘贴以下内容:
{
"restartable": "rs",
"ignore": [".git", "node_modules/**/node_modules"],
"verbose": true,
"execMap": { // [A]
"ts": "node --require ts-node/register"
},
"watch": ["src/"],
"env": {
"NODE_ENV": "development"
},
"ext": "js,json,ts"
}
- // [A]:这里我们对 nodemon 说:“嘿 nodemon,如果我们使用“.ts”文件运行“nodemon”,请使用此行来执行该文件”。因此,现在我们可以这样做
nodemon server.ts
,它将用于ts-node
编译我们的文件。
要了解有关 Nodemon 配置的更多信息,您可以查看其存储库中的示例
现在,让我们创建tsconfig.json
文件:
$ touch tsconfig.json
$ vim $_
并使用:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "./dist",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"esModuleInterop": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.test.ts"]
}
与默认配置没有太大区别(例如当您运行tsc --init
)
我们快完成了,让我们创建一个npm 脚本来启动我们未来的服务器:
// ...
"scripts": {
"dev": "nodemon src/entry.ts"
}
// ...
现在,是时候创建我们的服务器了。
💻 编写我们的服务器和一些路由
正如我们在 nodemon 和 npm 脚本配置中看到的,我们需要创建一个名为的文件夹src
和一个名为的文件entry.ts
:
$ mkdir src
$ cd $_
$ touch entry.ts
$ vim $_
让我们写下以下内容:
import express from 'express';
const server = express();
server.use('/_healthcheck', (_req, res) => {
res.status(200).json({ uptime: process.uptime() });
});
server.listen(4004, () => { console.log('Running at localhost:4004') })
现在我们可以运行:
$ yarn dev
看看我们的 Node.js 与 TypeScript + Nodemon 服务器正在运行:
太棒了!🎉
但是等等...还缺少一个重要部分,我该如何调试这个东西?😱
📊 将 Debug 配置附加到我们的项目
使用nodemon时,我们只需传递一个--inspect
标志,即可使 Node 进程可调试。为此,我们创建一个新的 npm 脚本:
// ...
"scripts": {
// ...
"dev:debug": "nodemon --inspect src/entry.ts"
}
// ...
如果我们运行:
$ yarn dev:debug
我们可以在日志中看到调试选项:
太棒了!让我们创建 VSCode 配置:
$ mkdir .vscode
$ cd $_
$ touch launch.json
$ vim $_
并粘贴以下内容:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Node: Nodemon",
"processId": "${command:PickProcess}",
"restart": true,
"protocol": "inspector"
}
]
}
此配置基于Microsoft Recipes for VSCode 之一。
让我们打开 VSCode 编辑器并进入“调试”面板:
随着我们的yarn dev:debug
跑步,让我们按下上面截图中显示的绿色箭头。
首先,我们需要选择指向我们服务器的进程:
选择它之后,我们可以看到一个浮动的调试面板和一些 UI 变化:
现在,您可以在代码中添加断点,并在编辑器中使用 nodemon 重新加载服务器:
愉快的体验!❤️🎉😎
🌐 附加功能:它也适用于 Google Chrome DevTools
是的。我们可以采取以下步骤:
- 导航至
chrome://inspect
- 单击指向您的服务器的“远程目标”
inspect
部分,然后使用 Chrome DevTools 调试您的服务器:
注意:我尝试使用“打开 Node 专用 DevTools”选项,但效果不佳 :( 如果您知道如何使其工作,请与我们分享!
☕️我想要这一切,甚至更多!
测试呢?文件夹结构怎么样?有默认项目吗?
不用多说!就我个人而言,我有一个不带任何偏见的小型默认项目:
https://github.com/oieduardorabelo/node-typescript
你会发现:
- Node.js + TypeScript
- 笑话
- Nodemon
欢迎随意分叉、贡献和使用!
祝你编程愉快!🙌
鏂囩珷鏉ユ簮锛�https://dev.to/oieduardorabelo/nodejs-with-typescript-debug-inside-vscode-and-nodemon-23o7