Страница, отображающая ответ вместо содержимого

#javascript #reactjs #express

#javascript #reactjs #выразить

Вопрос:

Я разрабатываю веб-страницу, используя express для серверной части и reactjs для интерфейса. Все различные представления корректно работают со своими маршрутами в react. Но когда я создаю веб-пакет и запускаю приложение в Express, есть один маршрут, который показывает мне ответ, который я получаю вместо содержимого веб-страницы.

Вот как я объявляю свои маршруты в react.

  <Router>
            <Route exact path="/" component={LoginPage} />
            <Route path="/menu/:accessToken" component={MainPage} /> 
</Router>
  

И это метод get для главной страницы в express

 router.get('/menu/:accessToken', function (req, res, next) {
    res.send("OK");
});
  

Комментарии:

1. на каком порту запущено ваше приложение react и на каком порту запущено ваше приложение Express?

2. React работает на 3000, а express — на 3001

Ответ №1:

Вместо отправки строки в ответ вам нужно отправить html, т.Е. index.html файл приложения react для всех URL-адресов, который будет разрешать маршрут на основе ваших маршрутов.

 router.get('/*', function (req, res, next) {
    res.send(indexHtmlFile); // set proper content-type etc. This is not exact code to copy paste
});
  

Комментарии:

1. Я думал об этом, но моя страница входа в систему работает, и метод get точно такой же, единственное отличие — маршрут.

2. IMO, вам не нужен сервер для приложения react, если вам не нужен рендеринг на стороне сервера, вы можете просто развернуть свое приложение в какой-нибудь статической службе доставки контента, такой как AWS S3 или Firebase Hosting и т.д.