使用npm run dev时Nodemon无法检测文件变更的问题排查
问题原因及解决方案
核心原因
Windows环境下,npm执行脚本时会对引号做特殊处理:你在package.json里用的单引号'src/**/*.ts',会被npm传递给执行环境时保留单引号,导致nodemon实际监听的是带单引号的字面路径(即'src/**/*.ts'),而非预期的src/**/*.ts。而直接在PowerShell里执行命令时,PowerShell会正确解析单引号作为字符串分隔符,所以nodemon能正常识别路径。
解决办法
方法1:替换单引号为转义的双引号
在package.json的scripts里,把单引号换成转义的双引号(JSON本身用双引号包裹,内部双引号需转义):
"scripts": { "dev": "npx nodemon --watch \"src/**/*.ts\" -e ts --exec ts-node --esm src/index.ts" }
方法2:去掉引号(路径无空格时适用)
如果你的路径里没有空格,可直接去掉引号,npm和nodemon都能正确解析:
"scripts": { "dev": "npx nodemon --watch src/**/*.ts -e ts --exec ts-node --esm src/index.ts" }
方法3:使用nodemon配置文件(更优雅)
创建nodemon.json文件,把监听规则写在配置里,彻底避免引号解析问题:
{ "watch": ["src/**/*.ts"], "ext": "ts", "exec": "ts-node --esm src/index.ts" }
然后修改package.json的scripts:
"scripts": { "dev": "npx nodemon" }
内容的提问来源于stack exchange,提问作者Said Torres
相关产品推荐
相关产品推荐

