Create-React-App .env 文件目录位置(非 root)

Ale*_*ton 3 environment-variables express reactjs create-react-app dotenv

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

注意到我可以server.js通过简单地导入来在我的 Express 后端实现这一点,如下所示:

require('dotenv').config({ path: `./environments/` })
Run Code Online (Sandbox Code Playgroud)

我可以对 React 中的客户端代码执行同样的操作吗?如果是这样,我应该把这个导入放在哪里?似乎对我不起作用。

Aje*_*hah 8

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

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

安装

npm i env-cmd
Run Code Online (Sandbox Code Playgroud)

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"
  },
Run Code Online (Sandbox Code Playgroud)

创建后.env.dev,在目录中。.env.qa.env.demoenvs/

现在,您可以运行:

$ 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
Run Code Online (Sandbox Code Playgroud)