"Недопустимый заголовок узла" в приложении React, развернутом в IBM Cloud
Я разработал очень простое демо-приложение Todo List (Express + React) в соответствии с YT-руководством Брэда Траверси и успешно развернул его в 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-реагировать-app:
HOST=mypublicdevhost.com
DANGEROUSLY_DISABLE_HOST_CHECK=true
Некоторые люди задавали аналогичный вопрос и о переполнении стека:
Недопустимый заголовок хоста при запуске Create React App на поддомене localhost
Как исправить ошибку Invalid Host Header при развертывании моего приложения реакции на Heroku?
Ни один из ответов не помог, однако.
Я пришел к выводу, что это проблема IBM Cloud. Кто-нибудь знает возможную причину этого? Существуют ли какие-либо ограничения, которые есть у IBM Cloud, которые препятствуют правильной загрузке моего приложения?
Любая помощь будет оценена.
РЕДАКТИРОВАТЬ:
Скрипт для фазы сборки:
export PATH=/opt/IBM/node-v6.7.0/bin:$PATH
npm install
npm run build
Скрипт для фазы развертывания:
cf push "${CF_APP}"
2 ответа
Рабочим решением является использование http-proxy-middleware для ручной настройки прокси. Пожалуйста, смотрите объяснение здесь: развертывание create-Reaction-app на heroku с экспресс-бэкендом возвращает неверный заголовок хоста в браузере
Вот минимальный рабочий пример: https://github.com/sehailey/proxytest и вот этот пример развернут: https://proxytest2.herokuapp.com/
Если вы находитесь в рабочем режиме и у вас есть домен, создайте файл в корневом каталоге клиента с именем
.env.production
. Внутри этого файла напишите это
HOST=yourdomain.com
Не нужно писать какой-либо код, это правильный способ избавиться от этой ошибки.