npm run build breaks реагирует на роутер - PullRequest
0 голосов
/ 26 октября 2018

Я сейчас работаю над реактивным проектом.Я настраиваю его для развертывания, поэтому собираю его командой «npm run build».

К сожалению, когда я делаю это и отправляю содержимое / build на веб-сервер apache (будь то на DigitalOcean или локально с XAMPP), все маршруты не работают и выдают ошибку 404 not found.Хотя домашняя страница работает нормально, так же как и проект, когда он запускается через «команду запуска npm»

Я пытался найти решения в Интернете, но пока не смог решить эту проблему.

1 Ответ

0 голосов
/ 18 июня 2019

Хочу поделиться этим, если кто-то столкнется с этим вопросом в будущем:

Предполагается, что Ubuntu используется в качестве ОС:

Я следовал определенным шагам из этого сообщения от Reddit , и я могу засвидетельствовать эту работу для запуска SPA на веб-сервере Apache с правильной маршрутизацией.

Цитировать:

1) В apache2.conf, расположенном в etc/apache2/, я превратил AllowOverride в All. Я также добавил имя_сервера localhost в файл. (Я как-то пропустил это последнее предложение, но в конце оно все равно работало)

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

2) В файле hosts.debian.tmpl, найденном в /etc/cloud/templates, я добавил 127.0.0.1 <yourdomain.com> к файлу, где находятся другие ips подобия.

127.0.0.1 yourdomain.com

3) Я бегал sudo a2enmod rewrite. Затем я перезапустил сервер apache через service apache2 restart. Это включает mod_rewrite.

Наконец, внутри папки моего проекта /var/www/html, рядом с моим файлом index.html я создал файл .htaccess и добавил следующее:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ / [L,QSA]

Конечная цитата

Если вы запустили npm run build, а затем скопировали все содержимое папки build в общедоступный каталог, это должно сработать.

Когда я впервые запустил web dev, я не был уверен, что правильно настроил конфигурацию VirtualHost, поэтому обычно я сначала делал фиктивный index.html с, скажем, примером Hello World. Когда я подтвердил, что могу видеть Hello World в браузере (что означает, что я правильно настроил конфигурацию VirtualHost), я сбрасываю содержимое папки build туда, где находился фиктивный index.html.

Надеюсь, это поможет вам сейчас так же, как и для меня!

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