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

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


当前回答

对于那些应用了上面所有这些答案但没有工作的人,只要重新启动npm start的终端,停止活动服务器并再次运行它,它就会工作,因为它对我有用

其他回答

我有同样的问题,我无法在App.js中访问.env变量。 我已经解决了使用创建正确的。env文件的问题。

在我的情况下,我从不同的操作系统复制文件,并在ubuntu系统中使用 所以我只是做“sudo touch .env”,并添加我的变量,重新启动应用程序,然后它为我工作。

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

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

那份文件造成了混乱。

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

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

如果以上这些方法都不适合你,试试下面这些可能的方法:

确保文件中需要定义环境变量的所有导入语句都是从本地项目导入的,而不是从其他项目导入的(VSCode错误地以这种方式自动完成了一些导入语句) 尝试退出当前的终端实例,并在一个新实例中运行应用程序

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

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

对我有用的是在我的包中安装env-cmd。JSON添加以下代码行

"scripts": {
"start": "env-cmd -f .env.development react-scripts start ",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"

}