在React项目开发中,环境变量是管理不同环境配置的重要方式,很多开发者会在开发阶段正常使用.env文件存储配置,但到了生产构建阶段却出现变量读取异常的困扰,导致接口地址、密钥等配置项无法正确加载。

异常出现的常见原因
React项目对环境变量的读取有严格的规则限制,生产构建时出现读取异常大多和以下原因相关:
- 环境变量命名不符合规范,React仅会加载以
REACT_APP_为前缀的变量,其他前缀的变量会被忽略。 - .env文件放置位置错误,需要放在项目根目录下,而不是src目录或其他子目录中。
- 构建时未重新加载环境变量,修改.env文件后没有重新执行构建命令,导致旧配置被打包。
- 使用了错误的环境变量加载方式,比如直接通过
process.env读取未暴露的变量。
简单修复方案步骤
第一步:检查变量命名规范
首先确认.env文件中的所有变量都以REACT_APP_作为前缀,示例正确配置如下:
# 正确的.env配置示例 REACT_APP_API_BASE_URL=https://api.ipipp.com REACT_APP_APP_NAME=MyReactApp
第二步:确认文件位置和构建命令
将.env文件放在项目根目录,和package.json同级。修改配置后,重新执行生产构建命令:
# 重新执行生产构建 npm run build # 或者使用yarn yarn build
第三步:代码中正确读取变量
在组件或工具函数中,通过process.env.REACT_APP_变量名的方式读取变量,不要省略前缀,示例代码如下:
// 正确读取环境变量的示例
const apiBaseUrl = process.env.REACT_APP_API_BASE_URL;
console.log("当前接口基础地址:", apiBaseUrl);
function fetchData() {
return fetch(`${apiBaseUrl}/user/list`)
.then(res => res.json());
}
第四步:特殊场景的额外处理
如果需要在不同环境使用不同的.env配置,可以创建对应环境的文件:
| 文件名 | 生效环境 |
|---|---|
| .env.development | 开发环境(npm start启动时生效) |
| .env.production | 生产构建环境(npm run build时生效) |
| .env.test | 测试环境 |
对应的构建命令可以指定环境:
# 指定生产环境构建 REACT_APP_ENV=production npm run build
验证修复效果
构建完成后,可以检查打包后的文件,搜索对应的变量值是否已经正确注入。如果是部署到服务器,可以在浏览器控制台打印process.env.REACT_APP_开头的变量,确认值是否符合预期。
注意:不要将敏感密钥直接存储在.env文件中,尤其是生产环境的密钥,建议通过服务端注入或者加密存储的方式处理,避免配置泄露。