【问题标题】:Create-React-App .env file directory location (Non-root)Create-React-App .env 文件目录位置(非根)
【发布时间】:2026-02-14 21:55:01
【问题描述】:

使用create-react-app (CRA) 创建一个新的网络应用程序后,我需要包含一些用于配置各种端点的环境文件。注意到 CRA 附带了很酷的 dotenv 包,一切就绪。只有一个问题——我想让dotenv 从我的./environments 目录而不是根目录中读取这些文件。有没有办法从根目录单独加载目录中的.env.env.local.env.test 等文件?

注意到我可以在我的 express 后端 server.js 中实现这一点,只需像这样导入:

require('dotenv').config({ path: `./environments/` })

我可以在 React 中对我的客户端代码做同样的事情吗?如果是这样,我应该把这个进口放在哪里?似乎对我不起作用。

【问题讨论】:

标签: reactjs express environment-variables create-react-app dotenv


【解决方案1】:

如果您使用 CRA 创建项目并希望配置 dotenv 以更改加载 env 文件的路径,则必须执行 npm eject

或者,您可以使用env-cmd 来实现相同的目的:

安装

npm i env-cmd

package.json中添加脚本,例如:

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    
    "dev": "env-cmd -f envs/.env.dev react-scripts build",
     "qa": "env-cmd -f envs/.env.qa react-scripts build",
    "demo": "env-cmd -f envs/.env.demo react-scripts build"
  },

envs/目录中创建.env.dev.env.qa.env.demo之后。

现在,你可以运行了:

$ npm run dev // it will use envs/.env.dev file
$ npm run qa // it will use envs/.env.qa file
$ npm run demo // it will use envs/.env.demo file

【讨论】: