【发布时间】:2019-03-19 18:00:55
【问题描述】:
我根据Brad Traversy's YT tutorial 开发了一个非常简单的演示待办事项列表应用程序(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 中的部署管道中的构建和部署阶段顺利通过
我已经用谷歌搜索并尝试使用官方create-react-app docs建议的方法来解决这个问题:
HOST=mypublicdevhost.com
DANGEROUSLY_DISABLE_HOST_CHECK=true
也有人在 Stack Overflow 上问过类似的问题:
Invalid Host header when running Create React App on localhost subdomain
How do I fix an Invalid Host Header error when deploying my react app to Heroku?
然而,这些答案都没有帮助。
我得出的结论是,这是一个特定于 IBM Cloud 的问题。有谁知道这可能的原因? IBM Cloud 是否有任何限制阻止我的应用程序正确加载?
任何帮助将不胜感激。
编辑:
构建阶段的脚本:
export PATH=/opt/IBM/node-v6.7.0/bin:$PATH
npm install
npm run build
部署阶段的脚本:
cf push "${CF_APP}"
【问题讨论】:
-
你是怎么推的?你的清单文件是什么? IBM Cloud 域还是自定义域?
-
我使用
cf push将我的应用程序放在 IBM Cloud 上。之后,我在 IBM Cloud 中配置了一个工具链,并将应用程序连接到它的 github 存储库。因此,只要有对 master 分支的提交,就会触发 Build 阶段。我将脚本添加到我的帖子中。至于清单文件,我实际上没有——我应该有吗?它是 IBM Cloud 域。
标签: reactjs express deployment ibm-cloud