在响应服务器端渲染时使用 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_URL
是 undefined
。
据我了解,.env 是我应该用于此类内容的文件。我错了吗?我应该使用另一种方法来存储公共环境变量吗?或者有什么方法可以让节点服务器识别这些值?
您可以(应该)提供生产版本。
当你制作 npm run build
时,webpack 获取你的 .env
文件中的条目,并在构建中用相应的值替换它们。
对于服务器端渲染,您必须在节点服务器中定义环境变量,作为系统环境变量或在后端服务器读取的 .env
上(可能是一个webpack-dev-server 正在使用)。
根据Create React App docs,为了在静态和 SSR 应用程序中向 React 公开环境变量,变量名称必须以 REACT_APP_
为前缀。这可以防止敏感的 and/or 不必要的变量被包含在 javascript 包中。
我有一个在客户端运行良好的 React 应用程序,现在正尝试让它在服务器端运行。
我将它与 create-react-app 样板一起使用: https://github.com/facebookincubator/create-react-app
我 运行 遇到一个问题,我在 .env 中存储了一些环境变量,但是在服务器上我无法访问这些变量。
因此 axios.get(process.env.API_URL + 'something')
之类的行将通过 404,因为 process.env.API_URL
是 undefined
。
据我了解,.env 是我应该用于此类内容的文件。我错了吗?我应该使用另一种方法来存储公共环境变量吗?或者有什么方法可以让节点服务器识别这些值?
您可以(应该)提供生产版本。
当你制作 npm run build
时,webpack 获取你的 .env
文件中的条目,并在构建中用相应的值替换它们。
对于服务器端渲染,您必须在节点服务器中定义环境变量,作为系统环境变量或在后端服务器读取的 .env
上(可能是一个webpack-dev-server 正在使用)。
根据Create React App docs,为了在静态和 SSR 应用程序中向 React 公开环境变量,变量名称必须以 REACT_APP_
为前缀。这可以防止敏感的 and/or 不必要的变量被包含在 javascript 包中。