"Недопустимый заголовок узла" в приложении 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

Некоторые люди задавали аналогичный вопрос и о переполнении стека:

Ни один из ответов не помог, однако.

Я пришел к выводу, что это проблема 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

Не нужно писать какой-либо код, это правильный способ избавиться от этой ошибки.

Документы

Другие вопросы по тегам