#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 и т.д.