Реагирующий прокси-сервер NodeJs - Запрос API-интерфейса сервера - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время я использую NodeJ с Express Framework и React в качестве моего внешнего интерфейса. Когда я делаю запрос на машине разработчика, логин (passport-google) работает безупречно. Поскольку я добавил https на рабочий сервер, он больше не работает в Google Chrome. Safari и IE работают.

Я считаю, что запрос не передается на сервер экспресс-доставки.

"proxy": {
"/api/*": {
  "target": "http://localhost:3001",
  "secure": false
}

Настройки прокси в реакции

Это маршрут авторизации

router.get(
  "/auth/google",
  passport.authenticate("google", {
    scope: ["profile", "email"]
  })
);

router.get(
  "/auth/google/callback",
  passport.authenticate("google"),
  (req, res) => {
    res.redirect("/dashboard");
  }
);

Спасибо

1 Ответ

0 голосов
/ 05 апреля 2019

Не уверен, как он может работать в Safari и IE, а не в Chrome, но понимаю, что сервер Create-React-App не существует в рабочей среде.

Если вы развертываете в Heroku, все меняется. Перед развертыванием в производство в Heroku вы должны создать свой проект React. Когда вы создаете свой проект React, CRA берет все файлы JavaScript и CSS, запускает Webpack и Babel над всеми этими файлами и сохраняет окончательную сборку в папке build/.

Когда пользователь посещает ваше приложение в Heroku, вы запускаете только API Node / Express, и оно отправляет пользователя обратно в файл HTML, а недавно созданный файл JavaScript помещается в папку build/.

npm run build - это то, что вы запускаете перед развертыванием в производство.

Поэтому, когда вы переходите в производственную среду, вам просто нужно создать приложение, зафиксировать его, развернуть на Heroku и оставить его на сервере Express для обслуживания всех различных файлов JavaScript.

Так что вам нужно беспокоиться только о прокси для вашей среды разработки, потому что CRA не существует внутри производства.

Вы должны использовать относительные маршруты в вашем приложении React.

Вся идея прокси-сервера заключается в том, чтобы перенаправить запросы с localhost:3000/auth/google на localhost:5000, потому что вы используете два сервера в разработке, поэтому запрос API должен быть прокси, но при развертывании вы больше не используете CRA, CRA существует только для использования в разработке, чтобы помочь нам создавать приложения React хорошего качества.

Локальные хосты 3000 и 5000 прекращают свое существование, когда вы, по крайней мере, внедряетесь в производство в Heroku.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...