Я давно искал эту тему и пробовал много методов, которые не работают. Если вы используете angular-cli и с выражением, я нашел решение, если выбранный ответ не работает для вас.
Попробуйте этот модуль узла: express-history-api-fallback
[Угловое] Измените файл app.module.ts под @NgModule> импорт в следующем:
RouterModule.forRoot(routes), ...
Это так называемые: "Место Стратегия"
Вы, вероятно, были с помощью "Hash Местоположение стратегии", как это:
RouterModule.forRoot(routes, { useHash: true }) , ...
[Экспресс & Узел] В принципе, вам нужно правильно обрабатывать URL-адрес, поэтому, если вы хотите называть «api/datas» и т. Д., Что не противоречит стратегии размещения HTML5.
В файле server.js (если вы использовали экспресс-генератор, Я переименовать его в middleware.js для ясности)
Шаг 1. - Требовать express-history-api-fallback module.
const fallback = require('express-history-api-fallback');
Шаг 2.У вас может быть много модулей маршрутов, sth. как:
app.use('/api/users, userRoutes);
app.use('/api/books, bookRoutes); ......
app.use('/', index); // Where you render your Angular 4 (dist/index.html)
Becareful с заказом вы пишете, в моем случае я называю правый модуль под app.use («/», индекс);
app.use(fallback(__dirname + '/dist/index.html'));
* Удостоверьтесь, что это прежде, чем вы будете обрабатывать 404 или sth. как это .
Этот подход работает для меня:) Я использую стек EAN (Angular4 с кли, Express, Node)
Вы должны использовать angular2 маршрутизации, используя путь после #, как локального хоста: 3000/#/поиск. Таким образом, угловой 2 получит запрос, а не сервер – binariedMe
, но угловое2 сгенерирует маршрут без # – Rhushikesh
и его хорошо выглядит – Rhushikesh