create-react-app无法读取.env文件,process.env返回空对象如何解决?
我来帮你排查这个问题,React项目里环境变量读取失败通常是几个常见的配置细节没做好,咱们一步步来解决:
先修正URL的格式错误:你写的
http:\localhost:3001里的反斜杠是错的!正确的URL应该是http://localhost:3001(两个正斜杠),这个格式错误很可能直接导致变量解析失败,先把这个改过来。确认环境变量命名规则:React Create App(CRA)要求所有自定义环境变量必须以
REACT_APP_开头,你这个命名是符合要求的,但要检查有没有拼写错误,比如大小写、下划线遗漏之类的,确保代码里读取的变量名和.env里的完全一致。必须重启开发服务器:React的环境变量是在启动项目时加载的,修改.env文件后,一定要停止当前的
npm start/yarn start进程,重新启动一次,否则新的变量不会生效——这是最容易被忽略的点!检查.env文件的位置:确保
.env文件放在项目根目录,也就是和package.json、public、src文件夹同一级的位置,不能放在子文件夹里,否则CRA找不到它。不要直接打印整个process.env对象:CRA会做tree-shaking,移除代码中未使用的环境变量。如果你直接
console.log(process.env),可能看不到你定义的变量,但直接打印console.log(process.env.REACT_APP_API_URL)就能看到正确的值(只要你在代码里用到了它)。如果不是用CRA搭建的项目:如果你是自己配置的Webpack,需要手动配置环境变量注入:
- 先安装
dotenv包:npm install dotenv --save-dev - 在webpack.config.js中添加配置:
const webpack = require('webpack'); require('dotenv').config(); module.exports = { // ...其他Webpack配置 plugins: [ new webpack.DefinePlugin({ 'process.env.REACT_APP_API_URL': JSON.stringify(process.env.REACT_APP_API_URL) }) ] };
配置完成后同样需要重启开发服务器。
- 先安装
检查是否有环境特定的.env文件冲突:如果你项目里有
.env.development、.env.production这类环境专属文件,开发环境会优先加载.env.development,如果这个文件里没有配置REACT_APP_API_URL,才会用根目录.env里的值;如果有同名变量,会被环境专属文件覆盖,所以要确认对应环境的配置文件是否正确。
按照上面的步骤排查,应该就能解决问题了。
内容的提问来源于stack exchange,提问作者N N




