【发布时间】:2018-06-30 21:25:27
【问题描述】:
我正在使用 create react app 引导我的应用程序。
我在根目录中添加了两个.env 文件.env.development 和.env.production。
我的.env.development 包括:
API_URL=http://localhost:3000/api
CALLBACK_URL=http://localhost:3005/callback
当我使用react-scripts start 运行我的应用程序并控制台输出process.env 时,它会吐出
{ NODE_ENV: "development", PUBLIC_URL: "" }
我尝试了不同的东西,但它只是没有在我的开发文件中获取验证,我做错了什么?!
目录结构为:
/.env.development
/src/index.js
Package.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 正确指出了我的变量should be prefixed。
编辑 2
如果我将文件命名为.env,它可以正常工作,但如果我使用.env.development 或.end.production,则不行
【问题讨论】:
-
你能发布你的
package.json文件吗? -
process.env是后端(节点或您正在使用的任何东西)可以读取的东西。前端包不知道process.env是什么,因为它在浏览器中运行。您可以将 webpack 配置为在捆绑时将其传递到 bundle 中,或者您可以更轻松地从您正在渲染的索引文件的后端将其作为全局变量传递。 -
可能不是这种情况,但我遇到过几次,我发现的问题是当我的计算机使用大量内存时,我没有加载我的 .env 变量。我使用 ubuntu 16.4。尝试从终端
react-scripts start API_URL=http://localhost:3000/api CALLBACK_URL=http://localhost:3005/callback加载变量,如果您仍然看不到它们,我会重新启动系统以降低内存使用率,然后再试一次,这通常会为我解决问题。 -
@RaulRene create-react-app 处理 .env 开箱即用,您无需进一步配置