Heroku制作应用程序:'无效的主机标题'与快递服务器和代理

时间:2018-04-05 06:02:51

标签: node.js express heroku

我有一个近乎新鲜的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时,我得到了无效的主机标题'。如何将其更改为在生产中工作?

2 个答案:

答案 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