使用AWS Amplify部署React应用时找不到.env.production文件求助
解决方案建议
根据你遇到的找不到.env.production的报错,结合你的配置,给出几个可行的解决办法:
1. 调整构建命令,直接使用Amplify环境变量
你的AWS Amplify控制台已经配置了环境变量,React会自动注入所有以REACT_APP_开头的变量,不需要依赖本地.env文件。
- 打开项目的
package.json,找到scripts里的build:production命令,查看是否是类似如下写法:"build:production": "env-cmd .env.production react-scripts build" - 将其修改为不需要
env-cmd的版本:"build:production": "react-scripts build" - 或者直接把Amplify构建设置里的
build命令改成npm run build(如果项目默认的build命令就是生产构建逻辑)。
2. 在Amplify构建阶段动态生成.env.production文件
如果你必须保留env-cmd的使用方式,可以在Amplify的preBuild阶段生成这个文件,把控制台配置的环境变量写入进去:
修改你的构建设置为:
version: 1 frontend: phases: preBuild: commands: - npm install - npm rebuild node-sass # 生成.env.production文件 - echo "REACT_APP_BASENAME=$REACT_APP_BASENAME" > .env.production - echo "REACT_APP_BASE_URL=$REACT_APP_BASE_URL" >> .env.production - echo "REACT_APP_GOOGLE_PLACES_API_KEY=$REACT_APP_GOOGLE_PLACES_API_KEY" >> .env.production - echo "SKIP_PREFLIGHT_CHECK=$SKIP_PREFLIGHT_CHECK" >> .env.production build: commands: - npm run build:production artifacts: baseDirectory: build files: - '**/*' cache: paths: - node_modules/**/*
3. 检查代码库是否遗漏了.env.production文件(不推荐敏感信息场景)
如果之前这个文件存在于代码库中,后来被误删,你可以重新添加它到代码库(注意:绝对不要把API密钥这类敏感信息提交到公开代码库,这种方式仅适用于非敏感的环境变量)。
补充说明
之前部署正常可能是因为:
- 本地开发时存在
.env.production文件,且之前的构建过程中该文件被包含在部署包内; - 或者之前的构建命令没有使用
env-cmd,不需要依赖这个文件。
内容的提问来源于stack exchange,提问作者Mahmoud Anwer
相关产品推荐
相关产品推荐

