NestJS启动watch模式时陷入无限循环问题求助
解决方案
1. 排除编译输出目录的监听
NestJS默认编译产物输出到dist目录,watch模式可能误触发该目录的文件变化检测,导致循环编译。修改tsconfig.json的exclude字段,确保包含dist:
{ "exclude": ["node_modules", "dist"] }
同时检查nest-cli.json,若无需监听静态资源,将watchAssets设为false:
{ "compilerOptions": { "watchAssets": false } }
2. 关闭Windows控制台快速编辑模式
Windows控制台的快速编辑模式可能干扰文件监听逻辑,引发重复检测:
- 打开命令提示符/PowerShell,右键标题栏选择「属性」
- 切换到「选项」标签,取消勾选「快速编辑模式」和「插入模式」
- 保存设置后重启项目
3. 更新核心依赖版本
Node.js 18.x与NestJS 9.x的部分依赖存在兼容问题,尝试升级相关包:
- 升级
@nestjs/cli:
npm install @nestjs/cli@latest --save-dev
- 升级
typescript和ts-node:
npm install typescript@latest ts-node@latest --save-dev
完成后删除node_modules和package-lock.json,重新执行npm install
4. 用cross-env规避文件系统监听冲突
Windows文件系统的监听机制可能与Nest的watch工具冲突,安装cross-env并修改启动脚本:
npm install cross-env --save-dev
修改package.json中的start:dev脚本:
{ "scripts": { "start:dev": "cross-env NODE_ENV=development nest start --watch" } }
5. 替换为nodemon作为监听工具
改用nodemon替代默认watch工具,避免原生监听的兼容性问题:
- 安装
nodemon:
npm install nodemon --save-dev
- 项目根目录创建
nodemon.json:
{ "watch": ["src"], "ext": "ts", "exec": "ts-node src/main.ts" }
- 修改
package.json脚本:
{ "scripts": { "start:dev": "nodemon" } }
内容的提问来源于stack exchange,提问作者HarelDanieli
相关产品推荐
相关产品推荐

