运行npm run start指定dev环境时Express仍加载prod配置是什么原因
问题原因
- 你在
package.json的start脚本中使用的ENV=development语法仅适配 Linux、macOS 等类 Unix 系统,如果你在 Windows 系统下通过 CMD / PowerShell 执行命令,该语法无法被识别,process.env.ENV不会被赋值,触发默认回退逻辑取到production,最终导致配置读取错误。 - 小概率场景:如果你在类 Unix 系统下运行仍出现该问题,可检查系统是否全局配置了
ENV环境变量,覆盖了脚本内的临时赋值。
修复方案
推荐使用跨平台环境变量工具cross-env统一不同系统的环境变量注入语法,操作步骤如下:
- 安装开发依赖:
npm install cross-env --save-dev
- 修改
package.json的scripts字段:
"scripts": { "start": "cross-env ENV=development nodemon ./bin/www", "production": "cross-env ENV=production node ./bin/www", "deploy-pre": "git commit --allow-empty -m 'ci-master' && git push origin master", "lint": "eslint" }
如果你仅在 Windows 下开发不需要兼容其他系统,也可以直接修改start脚本为 Windows 兼容写法:
"start": "set ENV=development&&nodemon ./bin/www"
内容的提问来源于stack exchange,提问作者mouchin777
相关产品推荐
相关产品推荐

