我使用创建反应应用程序引导我的应用程序。

我添加了两个。env文件。env.development和。env。生产在根。

我的. environment .development包括:

API_URL=http://localhost:3000/api
CALLBACK_URL=http://localhost:3005/callback

当我运行我的应用程序使用反应脚本启动和控制台进程。环境,它吐出

{ NODE_ENV: "development", PUBLIC_URL: "" }

我尝试了不同的事情,但它只是不拾起我的开发文件,我做错了什么?!

领导结构为:

/.env.development
/src/index.js

包中。Json脚本是:

"start": "export PORT=3005; npm-run-all --parallel server:start client:start",
    "client:start": "export PORT=3005; react-scripts start",
    "server:start": "node server.js",
    "build": "react-scripts build",

编辑:

@jamcreencia正确地指出我的变量应该以REACT_APP为前缀。

编辑2

如果我将文件命名为。env,它就可以工作,但如果我使用。env.development或。end.production就不行


当前回答

在我注意到我的IDE添加了一个导入之前,我挣扎了一个好小时:

import * as process from "process";

把它拿掉就没事了,如果你也是这样的话。

其他回答

关于env-cmd。根据VMois在gitHub上的帖子,env-cmd已经更新(编写时版本为9.0.1),环境变量将在你的React项目上工作如下:

"scripts": {
    "build:local": "env-cmd -f ./.env.production.local npm run build",
    "build:production": "env-cmd -f ./.env.production npm run build"
  }

在你的包裹里。json文件。

你的项目可以使用在你的环境中声明的变量,就像它们在你的JS文件中本地声明一样。默认情况下,您将拥有为您定义的NODE_ENV,以及以REACT_APP_开头的任何其他环境变量。

参考:https://create-react-app.dev/docs/adding-custom-environment-variables

那份文件造成了混乱。

所以你实际上需要在.env中放入前缀REACT_APP_才能使它工作。

并且确保重新启动测试/dev/prod服务器,因为.env内容更改是在构建阶段加载的。

当你从环境文件中获得undefined时,只需停止终端并使用NPM start命令重新启动。

使用create react app,你需要在变量名前加上REACT_APP_前缀。例:

REACT_APP_API_URL=http://localhost:3000/api
REACT_APP_CALLBACK_URL=http://localhost:3005/callback

**确保你的.env文件在根目录下,而不是在src文件夹里。

CRA文档添加自定义环境变量:

注意:必须创建以REACT_APP_开头的自定义环境变量。除了NODE_ENV之外的任何其他变量都将被忽略,以避免意外地暴露机器上可能具有相同名称的私钥

第一步:

在你的。env。在本地文件中添加REACT_APP_your_API_key

第二步:

添加配置文件${process.env.REACT_APP_Your_API_key}

第三步:

必须重新启动React应用程序,然后测试它是否工作。

主要是我忘了最后一步