Как настроить команду pm2 serve для обслуживания многостраничного приложения React? - PullRequest
0 голосов
/ 29 августа 2018

Я создал приложение ReactJS с помощью Create-React-App и хотел развернуть его на сервере Linux. Я следовал руководству, которое показало, как это сделать очень просто, установив pm2 и serve, а затем выполнив команду:

npm run build

Я выполнил команду, которая фактически размещала приложение:

pm2 serve build

Теперь проблема заключается в том, что всякий раз, когда я посещаю URL, который не является базовым, или нажимаю кнопку перезагрузки из браузера, когда я нахожусь на странице, отличной от домашней страницы, я получаю сообщение об ошибке 404. Не найдено.

Я понимаю, что предыдущая команда предназначена для обслуживания только одной страницы. Мой вопрос: есть ли способ сделать URL-адрес, например, http://myserver:port/a перейти к Route a в моем приложении? Или хотя бы перейти на http://myserver:port/?

У меня уже установлен Nginx на том же сервере, так как я использую его для размещения приложения Flask Python, но я очень новичок во всем этом и ищу простой способ, который работает, поскольку я столкнулся с некоторыми трудностями чтобы разместить приложение Python.

Обратите внимание, что я использую только React, никакой Redux, Express или любую базу данных, если это имеет какое-либо отношение. Я также использую BrowserRouter внутри моего приложения.

1 Ответ

0 голосов
/ 29 августа 2018

pm2 serve build просто статически обслуживает папку сборки. Поэтому http://myserver:port/a запросит файл с именем «a» в папке сборки. Если он не находит его, он возвращает 404

Чтобы ваш сервер мог обрабатывать другие маршруты, вы не можете использовать pm2 serve. Вместо этого вы должны запустить свой колб-сервер через pm2. Вы можете взглянуть на Как запустить скрипт на python, например, pm2 для nodejs

...