Как решить angular PathLocationStrategy (html5 route) refre sh 404 без перенаправления всех ресурсов на домашнюю страницу - PullRequest
0 голосов
/ 09 марта 2020

Я использую Angular7 и Node 8.11.4 в качестве веб-приложения, теперь мне нужно удалить «#» из URL, поэтому я изменяю форму locationStrategy с HashLocationStrategy на PathLocationStrategy и добавляю <base href="/"> в индекс. html .

Это работает, но вы знаете, после этого он получит ошибку 404 после refre sh страницы, я знаю, как перенаправить все ресурсы на домашнюю страницу, но моя цель - перенаправить некоторые ресурсы на specfi c компонент или страницу, потому что мне нужно посещать эти страницы напрямую, а не с домашней страницы, это мой вопрос, я искал в Google и обнаружил, что большая часть революции заключается в перенаправлении на домашнюю страницу, а не на указанную c страницу, я знаю Angular vue реагирует на все использование внешнего маршрутизатора, но я все еще хочу знать, можно ли напрямую перейти на конкретную страницу c.

Например: посетить http://localhost:4200/aaa, затем без перенаправления на домашнюю страницу localhost: 4200, он может показывать страницу ааа напрямую. / aaa - это путь, который ведет к компоненту Angular.

Пожалуйста, опубликуйте свой ответ, если у вас есть какое-либо решение или у вас такой же вопрос, на PathLocationStrategy html5 router.

1 Ответ

0 голосов
/ 29 апреля 2020

Проблема была исправлена, похоже, у многих людей такая же проблема, поэтому опубликуйте мое решение здесь.

Для сервера Node:

В нижней части вашего server.js, добавьте ниже метод :

const fs = require("fs");
app.use((req, res)=>{
  let rs = fs.createReadStream(`${__dirname}/dist/{your project name}/index.html`);
  res.writeHead(200, {"Content-type": "text/html"});
  rs.pipe(res);
})

__filename: это переменная узла, это означает имя файла текущего модуля.

fs: модуль fs предоставляет API для взаимодействия с файловая система

Это маршрут для которого не удалось найти ресурс на вашем сервере, например /aaa, когда вы пытаетесь обновить sh page / aaa после изменения на PathLocationStrategy, вы получите 404 ошибка, после добавления этого маршрута все не найденные ресурсы перейдут на этот маршрут, затем fs.createReadStream(${__dirname}/dist/{your project name}/index.html) перенаправит ваш ресурс на индекс. html, после этого Angular index. html обработает ваш маршрут и перенаправит на правильная страница.

...