You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

create-react-app无法读取.env文件,process.env返回空对象如何解决?

解决React中process.env读取.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.jsonpublicsrc文件夹同一级的位置,不能放在子文件夹里,否则CRA找不到它。

  • 不要直接打印整个process.env对象:CRA会做tree-shaking,移除代码中未使用的环境变量。如果你直接console.log(process.env),可能看不到你定义的变量,但直接打印console.log(process.env.REACT_APP_API_URL)就能看到正确的值(只要你在代码里用到了它)。

  • 如果不是用CRA搭建的项目:如果你是自己配置的Webpack,需要手动配置环境变量注入:

    1. 先安装dotenv包:npm install dotenv --save-dev
    2. 在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

火山引擎 最新活动