在反应服务器端渲染时使用process.env

时间:2017-09-07 16:09:18

标签: node.js reactjs environment-variables serverside-rendering

我有一个反应应用程序在客户端运行良好,我现在正试图让它在服务器端工作。

我正在使用create-react-app样板: https://github.com/facebookincubator/create-react-app

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

axios.get(process.env.API_URL + 'something')之类的行将通过404,因为process.env.API_URLundefined

我的理解是.env是我应该用于这样的东西的文件。我不对吗?我应该使用其他方法来存储公共环境变量吗?或者有没有办法让节点服务器识别这些值?

2 个答案:

答案 0 :(得分:1)

您可以(应该)为生产构建服务。

当您使npm run build webpack获取.env文件中的条目并使用相应的值替换它们时。

对于服务器端呈现,您必须在节点服务器中定义环境变量,可以是系统环境变量,也可以是后端服务器读取的.env(可能是后者) webpack-dev-server正在使用)。

答案 1 :(得分:0)

根据Create React App docs,为了在静态和SSR应用程序中向React暴露环境变量,变量名必须以REACT_APP_为前缀。这样可以防止敏感和/或不必要的变量包含在javascript捆绑包中。