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

React生产环境如何读取.env文件?为何.gitignore后生产仍可用?

为什么React生产环境没提交.env却能读到变量?

嘿,这个问题其实挺常见的,我来帮你梳理几个最可能的原因:

  • 构建阶段已经把变量打包进代码了
    如果你用的是Create React App这类脚手架,它会在执行npm run build(生产构建命令)时,把.env里的变量直接注入到静态JS文件中。也就是说,你可能是在本地用自己的.env构建了生产包,然后把这个build文件夹部署到了服务器上——哪怕服务器上没有.env,代码里已经硬编码了变量值,自然能正常读取。
    你可以验证一下:打开生产环境的静态JS文件,搜索你的环境变量值,大概率能直接找到它。

  • 生产服务器上其实存在.env文件
    虽然你本地的.env被加入了.gitignore,但可能部署时手动把这个文件上传到了生产服务器,或者你的CI/CD流程里悄悄配置了这个文件?比如用Docker部署的话,可能在镜像构建时把.env加进去了,或者运维同事在服务器上手动创建了同名文件,React运行时依然会读取它。

  • CI/CD平台帮你注入了环境变量
    很多CI/CD工具(比如GitHub Actions、GitLab CI)支持在构建阶段设置环境变量,这些变量会替代或补充.env里的内容。如果你的生产构建是在CI环境中完成的,并且已经在平台上配置了对应的环境变量,那构建后的代码里就会包含这些值,和你本地的.env完全无关。

  • 搞混了构建时和运行时的变量加载
    要记住:React的环境变量是构建时读取的,不是运行时。一旦构建完成,变量就固定在静态文件里了,后续不管运行环境有没有.env,都不会再去读取。所以如果你的生产环境用的是本地构建的产物,那自然会带着本地的变量值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:17:45