React-router typed-url и обновление на tomcat, эластичный бобовый стебель - PullRequest
0 голосов
/ 16 апреля 2019

Есть много вопросов по этой теме, которые заключаются в том, что введенный URL-адрес и обновление не работают при использовании реакции на работу, но я пытаюсь в течение длительного времени и по какой-то причине это не работает.

Я использую React с Spring boot и tomcat. Я использую BrowserRouter для маршрутизации. Я развертываю приложение на AWS упругих бобовых. При развертывании я делаю следующее: запустите npm run build, затем скопируйте полученные файлы из папки сборки в папку webContent, затем экспортируйте проект как файл war и разверните его в aws.

Как я понял, основным решением для этого является сервер файла index.html для всех запросов, и я попытался сделать следующее: - добавить следующее в /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
  DocumentRoot /var/lib/tomcat8/webapps/ROOT/
  ServerName domain.elasticbeanstalk.com

  AliasMatch ^/(.*)$ /var/lib/tomcat8/webapps/ROOT/index.html

  <Directory "/var/lib/tomcat8/webapps/ROOT">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

    RewriteEngine On  
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    RewriteRule ^/(.*)$ - [L]

    RewriteRule ^/(.*)$ /index.html [L]
  </Directory>
</VirtualHost>

Из вопросов, которые я прочитал, предлагается использовать / var / www / html, но я не понял, почему. Я пытался использовать его, копируя все из ROOT, но также не получилось.

Я пробовал много вариантов кода, который я поместил в файл конфигурации.

При настройке я получаю ошибку SyntaxError: expected expression, got '<'. На firefox я получаю The script from “http://awsdomain.com/static/js/2.7322c0fb.chunk.js” was loaded even though its MIME type (“”) is not a valid JavaScript MIME type.

и в chrome я получаю ту же ошибку, но с css-файлами, а не с js.

На данный момент, я предполагаю, что обслуживание index.html работает, но есть другая проблема, что сервер пытается проанализировать некоторые файлы js или css, такие как html или текст, которые не будут работать. В любом случае, я понятия не имею, как сказать браузеру, чтобы он правильно анализировал их и почему он анализирует их без ошибок обычным способом (без решения проблемы маршрутизации)? Я пытался добавить атрибут type для тегов link и script в index.html, но не получилось.

Есть много вещей, которые мне надоели, особенно в файлах конфигурации на экземпляре aws, но было бы сложно все это здесь поместить. Я надеюсь из комментариев получить корень проблем, а затем я могу дать любую недостающую информацию.

1 Ответ

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

Моя проблема наконец-то исправлена.Следующее является моим последним дополнением к httpd.conf

<VirtualHost *:80>
  DocumentRoot /var/lib/tomcat8/webapps/ROOT/
  ServerName domain.elasticbeanstalk.com

  <Directory /var/lib/tomcat8/webapps/ROOT>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Require all granted

    DirectoryIndex index.html

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.html$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.html [L]
    </IfModule>
  </Directory>
</VirtualHost>

Кроме того, было неприятно, что dir_module не был включен по умолчанию, который необходим DirectoryIndex.Чтобы включить его, добавьте LoadModule dir_module modules/mod_dir.so.

...