You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dotenv自定义路径配置异常:无法加载指定.env文件求助

解决Create React App中.env文件无法加载的问题

兄弟,我太懂这种死活读不到.env变量的憋屈感了——之前在CRA项目里踩过一模一样的坑!你控制台只输出{NODE_ENV: "development", PUBLIC_URL: ""},大概率是踩了CRA环境变量的几个隐形规则,咱们一步步排查:

1. 先确认.env的「位置和命名」绝对合规

CRA对.env文件的位置要求非常严格:

  • 必须放在项目根目录(和package.json、public文件夹同层级),不能塞到src或者其他子文件夹里
  • 文件名必须是.env(或者对应环境的.env.development、.env.production),不能改成.env.local.txt或者config.env这种花里胡哨的名字

2. 环境变量必须加REACT_APP_前缀!

这是CRA最容易被忽略的规则:只有以REACT_APP_开头的变量才会被注入到应用中,其他自定义变量会被自动忽略(NODE_ENV、PUBLIC_URL是CRA自带的系统变量,所以你能看到它们)。

举个正确的写法:

# .env文件里的内容
REACT_APP_API_KEY=abc123
REACT_APP_BASE_URL=https://your-api.com

3. 别手动调用dotenv!

很多人会习惯写require('dotenv').config()或者import dotenv from 'dotenv'; dotenv.config(),但CRA已经内置了dotenv的加载逻辑,手动调用反而可能因为路径问题加载不到根目录的.env文件,直接删掉这段代码就行。

4. 必须重启开发服务器!

修改.env文件后,一定要重启npm start,CRA不会热加载.env的修改,不重启的话永远读不到新变量。

5. 测试变量的正确姿势

别直接打印console.log(process.env),因为CRA会把环境变量注入到构建产物中,直接打印process.env可能看不到自定义变量。正确的做法是单独打印你的变量:

// 在src/App.js里测试
console.log(process.env.REACT_APP_API_KEY);

6. 排查多.env文件的优先级冲突

如果你同时有.env、.env.development、.env.local这些文件,CRA的加载优先级是:
.env.local > .env.development > .env
如果某个变量在优先级高的文件里被定义了,会覆盖低优先级的,检查一下是不是高优先级文件里没写这个变量。

如果以上都试过还是不行,试试删除node_modules/.cache文件夹(CRA的缓存目录),然后重新npm install再启动,大概率能解决缓存导致的问题。

内容的提问来源于stack exchange,提问作者Skyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:40:42