«Недопустимый заголовок хоста» в приложении React, развернутом в IBM Cloud

Я разработал очень простое демонстрационное приложение Todo List (Express + React), согласно Учебник Брэда Трэверси по YouTube, и успешно развернул это приложение на 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 проходят без проблем

Я погуглил и попытался решить эту проблему, используя подход, предлагаемый официальным создать-реагировать-приложение документы:

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}"

Как ты толкнул? Какой у вас файл манифеста? Домен IBM Cloud или личный домен?

data_henrik 15.10.2018 12:51

Я использовал cf push, чтобы разместить свое приложение в IBM Cloud. После этого я настроил набор инструментов в IBM Cloud и подключил приложение к его репозиторию github. Итак, каждый раз, когда происходит фиксация в главной ветке, запускается фаза сборки. Скрипты я добавил в свой пост. Что касается файла манифеста, у меня его на самом деле нет - он должен быть у меня? Это домен IBM Cloud.

PhiNessa 18.10.2018 11:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
1 911
1

Ответы 1

Рабочее решение - использовать http-proxy-middleware для ручной настройки прокси. См. Объяснение здесь: развертывание приложения create-response-app на heroku с помощью экспресс-бэкэнда возвращает недопустимый заголовок хоста в браузере

Вот минимальный рабочий пример: https://github.com/sehailey/proxytest и вот этот развернутый пример: https://proxytest2.herokuapp.com/

Я удалил proxy из своего package.json и вместо этого попытался настроить прокси вручную, как вы предложили. Это решило проблему с производственной версией, но по какой-то причине вообще не настраивал прокси для разработки. Есть идеи, как я могу настроить прокси, когда setupProxy.js не работает? (Я использую тот же самый код, что и вы)

PhiNessa 19.10.2018 18:50

У меня прокси не работает, когда я удаляю proxy из package.json + добавляю файл setupProxy.js. Работает только при установленном proxy. Это почему? Я не понимаю, как это может сработать для вас, и мне бы очень хотелось, чтобы это работало ... @sarah

PhiNessa 22.10.2018 14:54

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