我有一个反应应用程序在客户端运行良好,我现在正试图让它在服务器端工作。
我正在使用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是我应该用于这样的东西的文件。我不对吗?我应该使用其他方法来存储公共环境变量吗?或者有没有办法让节点服务器识别这些值?
答案 0 :(得分:1)
您可以(应该)为生产构建服务。
当您使npm run build
webpack获取.env
文件中的条目并使用相应的值替换它们时。
对于服务器端呈现,您必须在节点服务器中定义环境变量,可以是系统环境变量,也可以是后端服务器读取的.env
(可能是后者) webpack-dev-server正在使用)。
答案 1 :(得分:0)
根据Create React App docs,为了在静态和SSR应用程序中向React暴露环境变量,变量名必须以REACT_APP_
为前缀。这样可以防止敏感和/或不必要的变量包含在javascript捆绑包中。