VSCode调试Koa2需同时配置nodemon热重启和launch.json断点路径:先npm install --save-dev nodemon并设"dev": "nodemon index.js",再修改launch.json中"program"指向实际入口文件(如bin/www),若用nodemon则改用attach模式配合--inspect-brk=9229实现自动重连。

VSCode 跑 Koa2 项目,不配 nodemon 就没法热重启,不改 launch.json 就进不了断点——这两步漏掉任何一步,调试就卡在“改完代码要手动 Ctrl+C 再 npm run dev”。
为什么 npm run dev 会报错“无法加载 koa2.ps1”
这是 Windows PowerShell 默认禁止执行本地脚本导致的,不是 Koa2 或 VSCode 的问题。你看到的错误信息 无法加载文件 G:\编程\nodejs\node_global\koa2.ps1,因当前系统设置禁止脚本运行,本质是系统策略拦截了全局安装的 koa2 命令行工具(它是个 PowerShell 脚本)。
- 临时解决:在 VSCode 集成终端里先执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,回车确认 - 更稳妥的做法:别用全局
koa2脚手架,直接用npm init -y && npm install koa手动初始化,避开 PowerShell 脚本依赖 - 如果已经删过
node_global\koa2.ps1,下次全局重装仍会复现——这不是文件残留问题,是策略没改
怎么让 Koa2 修改代码后自动重启
靠 npm run dev 启动本身不会监听文件变化,必须引入 nodemon。注意它不是 Koa 的依赖,而是开发期工具。
- 安装:运行
npm install --save-dev nodemon(加--save-dev是因为只在开发时需要) - 配置
package.json中的dev脚本:"dev": "nodemon index.js"(入口文件名按你实际写的来,比如app.js或server/index.js) - 常见坑:
nodemon默认只监听.js文件,如果你用了.ts,得加参数:"dev": "nodemon --ext js,ts --exec ts-node index.ts" - 启动后终端会显示
[nodemon] restarting due to changes...才算生效,没这句说明没监听到变更
VSCode 断点调试 Koa2 必须改 launch.json
VSCode 默认调试配置指向 index.js,但 Koa2 脚手架(如 koa2 myapp 生成的)入口通常是 bin/www;即使自己写的简单项目,也常把启动逻辑放在 app.js 或 server.js。不改路径,F5 一按就报错 Cannot find module '.../index.js'。
- 打开调试面板 → 点齿轮图标 → 选
Node.js→ 自动生成.vscode/launch.json - 关键修改项:
"program"字段必须和你实际启动文件一致,例如:"program": "${workspaceFolder}/bin/www"或"program": "${workspaceFolder}/app.js" - 加
"skipFiles": ["<node_internals>/**"]</node_internals>,避免调试时误跳进node_modules里的 Koa 源码 - 如果用
nodemon启动,不要在launch.json里直接调nodemon——VSCode 调试器不兼容 shell 命令,应改用attach模式(见下一条)
用 nodemon + attach 模式实现边热重启边调试
想同时享受自动重启和断点调试,就不能用 launch 模式跑 nodemon,而要用 attach 模式连上 nodemon 启动的进程。否则每次重启都会断开调试器。
- 先改
package.json:"dev:debug": "nodemon --inspect-brk=9229 index.js"(--inspect-brk让 Node 启动即暂停,等调试器接入) - 再改
launch.json,新增一个配置:
{
"type": "node",
"request": "attach",
"name": "Attach to nodemon",
"port": 9229,
"restart": true,
"address": "localhost",
"sourceMaps": true,
"outFiles": ["${workspaceFolder}/dist/**/*.js"]
}
- 操作流程:终端运行
npm run dev:debug→ VSCode 调试面板选Attach to nodemon→ 点绿色三角启动 → 断点就绪 - 这个组合下,你改代码保存,
nodemon重启进程,VSCode 会自动重新 attach 上去,断点持续有效
最易忽略的是 nodemon 和 launch.json 的协作方式——用 launch 模式硬塞 nodemon 命令,看似省事,实则每次重启都得手动重连调试器;而 attach 模式配合 --inspect-brk 才是稳定工作的基础链路。


















