我有一个近乎新鲜的create-react-app
项目,我有一个运行测试API端点的简单快速服务器:
const express = require('express');
const app = express();
if(process.env.NODE_ENV === 'production') {
app.use(express.static('build'));
}
const port = process.env.PORT || 5000;
app.get('/api/hello', (req, res) => {
res.send('Hello From Express');
});
app.listen(port, () => {
console.log(`Server started at: http://localhost:${port}/`);
});
在package.json
我添加了一行"proxy": http://localhost:5000",
,这一切在本地运行正常。但是当我部署到Heroku时,我得到了无效的主机标题'。如何将其更改为在生产中工作?
答案 0 :(得分:2)
这是一个古老的问题,但是在处理同一问题时遇到了许多问题之一,因此,我在分享我所学到的知识,并希望它对其他人有用。
一个可行的解决方案是使用http-proxy-middleware手动设置代理。请在此处查看说明:deploying create-react-app to heroku with express backend returns invalid host header in browser
这是一个最小的工作示例:https://github.com/sehailey/proxytest 这是部署的示例:https://proxytest2.herokuapp.com/
答案 1 :(得分:0)
从 package.json 中删除
"proxy": "http://localhost:8080"
在名为 .env.development 的根文件夹中添加一个新文件,内容为:
HOST=name.herokuapp.com