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

我添加了两个。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就不行


当前回答

我也没有得到任何价值。出于某种原因,我认为环境文件应该是dev.env, qa。env等等。实际上,它只是“。env”。就是这样。以防别人犯同样的错误。

其他回答

添加.env文件后,您需要

重新启动应用程序 关闭服务器 再次运行NPM start

它应该能起作用

create-react不支持热重载功能的.env文件,因为它们不是Javascript。因此,当您更改env文件时,请确保手动启动服务器以查看新更改的效果。

在我的情况下,手动重启服务器工作良好:)

为此,有env-cmd模块。安装通过npm npm i env-cmd然后在你的包。Json文件在脚本部分:

  "scripts": {
    "start": "env-cmd .env.development react-scripts start",
    "build": "GENERATE_SOURCEMAP=false env-cmd .env.production react-scripts build",
  }

在你的项目根目录中,你必须创建两个env变量相同但值不同的文件:

.env.development
.env.production

那就把他们排除在公众之外。在你的.gitignore文件中添加两行:

.env.development
.env.production

因此,这是为dev和prod使用不同的env变量的正确方法。

我也遇到了同样的问题,但这是因为我的.env文件是YAML格式而不是JS格式。

这是

REACT_APP_API_PATH: 'https://my.api.path'

但这是必须的

REACT_APP_API_PATH = 'https://my.api.path'

使用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之外的任何其他变量都将被忽略,以避免意外地暴露机器上可能具有相同名称的私钥