Heroku部署React应用时出现sh: 1: if-env: not found报错如何解决
报错原因
你遇到的if-env: not found报错,核心是if-env依赖包被放在了项目的devDependencies(开发依赖)分类下,Heroku生产环境部署时默认只会安装dependencies(生产依赖)分类下的包,不会安装开发依赖,因此项目启动时找不到对应的可执行文件。
解决方案
- 方案1:将if-env移动到生产依赖(最推荐)
在本地项目根目录执行对应包管理器的命令:
用npm的情况:npm install if-env --save
用yarn的情况:yarn add if-env
执行完成后重新提交代码部署到Heroku即可。 - 方案2:配置Heroku安装所有开发依赖
如果你需要保留开发依赖的安装逻辑,可执行Heroku CLI命令修改环境变量:heroku config:set NPM_CONFIG_PRODUCTION=false YARN_PRODUCTION=false
该配置会让Heroku安装依赖时包含devDependencies下的所有内容,仅适合测试环境部署使用,生产环境不推荐。 - 方案3:移除对if-env的依赖
很多旧版本React脚手架会用if-env判断启动环境,你可以直接修改package.json中的scripts字段,替换掉if-env的调用逻辑,比如原本的启动脚本:"start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev"
可直接修改为对应环境的启动命令,比如生产环境:"start": "npm run start:prod"
修改后重新提交部署即可。
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

