nodemon不触发重启是因为默认仅监听当前目录下的.js文件,若项目含.cjs、.mjs、.json或.ts等扩展名却未在--ext中声明,或--watch路径未覆盖源码目录(如误用.而非src)、忽略规则错误、文件未手动保存落盘,均会导致监听失效。

Node.js 后端热更新在 VSCode 里不靠插件,靠 nodemon;配错 --watch 路径或漏掉 --ext 扩展名,改了文件也不会重启。
为什么 nodemon 不触发重启?
默认只监听当前目录下的 .js 文件,现代项目常含 .cjs、.mjs、.json 或 TypeScript 编译输出,漏掉就失效。
-
--watch src比--watch .更安全:避免监听node_modules或dist目录引发误触发 -
--ext js,json,cjs,mjs必须覆盖你实际修改的扩展名;如果用ts-node,还得加ts - Windows 下路径统一用正斜杠,比如
--ignore "dist/**/*",反斜杠可能被解析失败 - 改完
package.json或入口文件后没按Ctrl+S落盘,nodemon完全感知不到变化
package.json 的 dev 脚本怎么写才不翻车?
硬编码入口文件(如 nodemon app.js)是常见错误——切换开发模式(比如从 server.js 改成 bin/www)时容易忘记同步改脚本,结果热更新跑的是旧文件。
- 推荐写法:
"dev": "nodemon --watch src --ext js,json,cjs --ignore 'src/**/*.test.js' --exec node server.js" - 入口是 TypeScript?用
--exec ts-node server.ts,别同时开tsc --watch,两个进程争抢编译输出 - 确保
server.js里没有依赖未加载的全局环境变量——热重启时模块顶层代码会重执行,数据库连接等初始化逻辑可能重复建连
VSCode 调试器和 nodemon 能不能共存?
不能。点绿色「运行」按钮启动调试,再手动开终端跑 npm run dev,等于两个服务监听同一端口,必然冲突。
-
launch.json里别设"program"指向server.js同时又让nodemon监听它——这是最典型的端口占用报错来源 - 真要断点调试,停掉
nodemon,用launch.json启动;热更新期间断点大概率失效,不是 bug 是设计使然 - 必须边热更边查状态?改用
console.log或debugger+ 浏览器开发者工具,比 VSCode 断点更可靠
真正容易被忽略的不是怎么配,而是每次改完配置后没保存文件、或编辑器自动保存被关掉——nodemon 只响应磁盘文件变化,不是编辑器内存状态。


















