Прямой URL не работает в vuejs, но работает роутер push - PullRequest
0 голосов
/ 30 апреля 2018

Когда я загружаю компонент localhost:8080/scan, используя this.$router.push(), URL загружается вместе с компонентом. Но когда я выполняю npm run build, а затем http-server dist/, URL localhost:8080/scan не работает, выдает 404. Любая идея, почему он работает в Dev, а не после сборки. Я проверил онлайн и обнаружил, что это проблема nginx, но я попытался добавить try_files $uri $uri/ /index.html; согласно этому документу: https://router.vuejs.org/en/essentials/history-mode.html, но, похоже, ничего не работает. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 30 апреля 2018

Пожалуйста, отправьте свой полный код на вопрос или в репозиторий github. Иначе трудно угадать, в чем твоя проблема.

Если бы мне пришлось угадывать - ваш http-server не может найти scan.html, потому что он не существует. У вас есть несколько вариантов:

  • Используйте hash mode, для которого не требуется /scan url и вместо этого используйте /index.html#scan.
  • Используйте сервер node-js с определенными маршрутами, которые ведут на вашу html-страницу. Или просто отправьте их все на одну страницу. Вот пример https://github.com/ubershmekel/redditp/blob/1e9a659bcc34fa2f2dc28deb552b6702a1173cc1/app.js#L12
  • Используйте Nuxt или сделайте что-то, как делает Nuxt - создайте все html-файлы, чтобы вы все еще могли использовать статический сервер, такой как http-server. См. https://nuxtjs.org/guide#static-generated-pre-rendering- Например, вы можете скопировать ваш index.html в scan.html вручную.
...