node.js - React 服务端渲染时使用 process.env

标签 node.js reactjs environment-variables server-side-rendering

我有一个在客户端运行得很好的 React 应用程序,现在正在尝试让它在服务器端运行。

我将它与 create-react-app 样板一起使用: https://github.com/facebookincubator/create-react-app

我遇到了一个问题,我在 .env 中存储了一些环境变量,但是在服务器上我无法访问这些变量。

因此,诸如 axios.get(process.env.API_URL + 'something') 之类的行将通过 404,因为 process.env.API_URL未定义

据我了解,.env 是我应该用于此类内容的文件。我错了吗?我应该使用另一种方法来存储公共(public)环境变量吗?或者有什么方法可以让 Node 服务器识别这些值?

最佳答案

您可以(应该)为生产版本提供服务。

当您执行 npm run build 时,webpack 会获取 .env 文件中的条目,并在构建中将其替换为相应的值。

对于服务器端渲染,您必须在 Node 服务器中定义环境变量,可以是系统环境变量,也可以是后端服务器读取的 .env(可以是正在使用的一个 webpack-dev-server)。

关于node.js - React 服务端渲染时使用 process.env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46100913/

相关文章:

php - $_ENV 、 $_SESSION 和 $_COOKIE 之间有什么区别

javascript - 如何在 grunt 插件中运行 createReadStream(a stream)?

javascript - 我应该根据调用还是根据 reducer 管理的状态来组织我的 react redux reducer 组合?

django - 在 React SPA 中使用 Django 身份验证系统

reactjs - 如何在运行时通过docker-compose.yaml文件传递的React应用中读取环境变量?

c++ - 是否有迭代 POSIX 环境变量的函数?

bash - 在 shell 别名中设置环境变量

Javascript 正则表达式返回 null,node.js

javascript - ExpressJS : Redirect to an URL handled by client-side

node.js - 如何将参数发送到 Node.JS 基础服务器