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

Using process.env when react 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_URLundefined

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

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

当你制作 npm run build 时,webpack 获取你的 .env 文件中的条目,并在构建中用相应的值替换它们。

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

根据Create React App docs,为了在静态和 SSR 应用程序中向 React 公开环境变量,变量名称必须以 REACT_APP_ 为前缀。这可以防止敏感的 and/or 不必要的变量被包含在 javascript 包中。