部署到IBM Cloud的React应用程序中的“无效的主机头”

时间:2018-10-15 10:21:04

标签: reactjs express deployment ibm-cloud

根据Brad Traversy's YT tutorial,我已经开发了一个非常简单的演示Todo List应用程序(Express + React),并将该应用程序成功部署到了Heroku,并在其中运行。但是,当我将相同的完全相同的代码部署到IBM Cloud时,只有空白的句子Invalid Host header

更多背景信息:

  • 我在项目的根目录中使用过create-react-app
  • 服务器和React客户端之间有一个代理
  • 我正在部署一个提供静态文件的生产版本:

    // Serve static assets if in production
    if (process.env.NODE_ENV === 'production') {
      app.use(express.static('client/build'))
    
      app.get('*', (req, res) => {
        res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
      })
    }
    
  • 我在IBM Cloud的部署管道中的构建和部署阶段顺利通过

我已经用Google搜索并尝试使用官方create-react-app docs建议的方法来解决此问题:

HOST=mypublicdevhost.com
DANGEROUSLY_DISABLE_HOST_CHECK=true

也有人对Stack Overflow提出了类似的问题:

但是,没有一个答案有帮助。

我得出的结论是,这是特定于IBM Cloud的问题。有人知道这可能的原因吗? IBM Cloud是否有任何限制导致我的应用无法正确加载?

任何帮助将不胜感激。

编辑:

构建阶段的脚本:

export PATH=/opt/IBM/node-v6.7.0/bin:$PATH
npm install
npm run build

“部署”阶段的脚本:

cf push "${CF_APP}"

1 个答案:

答案 0 :(得分:0)

一个可行的解决方案是使用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/

相关问题