使用npm script运行nodemon失败,但手动执行正常的问题排查
问题分析与解决方案
核心原因
你的项目路径包含&符号(E:\Web Devlopment\Web Devlopment & Projects\...),Windows环境下npm处理带特殊字符的路径时会出错:&是命令分隔符,npm解析脚本时会错误截断路径,导致它误以为nodemon在E:\Web Devlopment\nodemon\bin\nodemon.js(路径被&截断),而不是项目本地的node_modules目录里。
手动运行命令正常是因为直接在shell中执行时,shell会正确解析带特殊字符的路径(默认会处理或你通过引号包裹),但npm的脚本执行逻辑对这类特殊字符的处理存在兼容性问题。
解决方案
1. 彻底解决:修改项目路径(推荐)
将包含&的目录名改为不含特殊字符的名称,比如把Web Devlopment & Projects改成Web Development and Projects,然后:
- 切换到修改后的项目目录
- 删除
node_modules文件夹和package-lock.json文件 - 重新执行
npm install - 再运行
npm run dev
2. 临时修复:修改scripts配置
如果暂时无法修改路径,可以尝试以下两种方式调整package.json的scripts:
- 用引号包裹nodemon的路径:
"scripts": { "dev": "\"node_modules/.bin/nodemon\" src/index.js", "start": "node src/index.js" } - 直接通过node调用nodemon的源码文件:
"scripts": { "dev": "node node_modules/nodemon/bin/nodemon.js src/index.js", "start": "node src/index.js" }
3. 额外排查步骤
- 确认全局是否安装了nodemon,如果有,尝试卸载全局版本(
npm uninstall -g nodemon),只保留项目本地依赖,避免全局和本地版本冲突。 - 检查npm缓存,执行
npm cache clean --force后重新安装依赖。
内容的提问来源于stack exchange,提问作者Hemal Pandya
相关产品推荐
相关产品推荐

