Я разработал очень простое демонстрационное приложение Todo List (Express + React), согласно Учебник Брэда Трэверси по YouTube, и успешно развернул это приложение на Heroku, где оно уже запущено. Однако, когда я развернул тот же самый код в IBM Cloud, у меня был только пустой экран с предложением Invalid Host header.
Еще немного контекста:
create-react-app в корне своего проектаЯ развертываю производственную версию, которая обслуживает статические файлы:
// 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}"
Я использовал cf push, чтобы разместить свое приложение в IBM Cloud. После этого я настроил набор инструментов в IBM Cloud и подключил приложение к его репозиторию github. Итак, каждый раз, когда происходит фиксация в главной ветке, запускается фаза сборки. Скрипты я добавил в свой пост. Что касается файла манифеста, у меня его на самом деле нет - он должен быть у меня? Это домен IBM Cloud.





Рабочее решение - использовать http-proxy-middleware для ручной настройки прокси. См. Объяснение здесь: развертывание приложения create-response-app на heroku с помощью экспресс-бэкэнда возвращает недопустимый заголовок хоста в браузере
Вот минимальный рабочий пример: https://github.com/sehailey/proxytest и вот этот развернутый пример: https://proxytest2.herokuapp.com/
Я удалил proxy из своего package.json и вместо этого попытался настроить прокси вручную, как вы предложили. Это решило проблему с производственной версией, но по какой-то причине вообще не настраивал прокси для разработки. Есть идеи, как я могу настроить прокси, когда setupProxy.js не работает? (Я использую тот же самый код, что и вы)
У меня прокси не работает, когда я удаляю proxy из package.json + добавляю файл setupProxy.js. Работает только при установленном proxy. Это почему? Я не понимаю, как это может сработать для вас, и мне бы очень хотелось, чтобы это работало ... @sarah
Как ты толкнул? Какой у вас файл манифеста? Домен IBM Cloud или личный домен?