Ich habe dieses Thema für eine ganze Weile gegraben, und versuche viele Methoden, die nicht funktionieren. Wenn Sie angle-cli und mit express verwenden, habe ich eine Lösung gefunden, wenn die gewählte Antwort nicht für Sie funktioniert.
diesen Knotenmodul Versuchen: express-history-api-fallback
[Angular] Ihre app.module.ts Datei ändern, unter @NgModule> Einfuhren wie folgt:
RouterModule.forRoot(routes), ...
Dies wird so genannt: "Location-Strategie"
Sie waren wahrscheinlich "Hash Location-Strategie" wie folgt aus:
RouterModule.forRoot(routes, { useHash: true }) , ...
[Express & Node] Grundsätzlich müssen Sie die URL richtig behandeln, also wenn Sie "API/Daten" usw. aufrufen möchten, die nicht mit der HTML5-Standort-Strategie in Konflikt stehen.
In Ihrem server.js Datei (wenn Sie Express-Generator verwendet, habe ich es als middleware.js für Klarheit umbenennen)
Schritt 1. - Erfordern die express-history-api-fallback module.
const fallback = require('express-history-api-fallback');
Schritt 2.Sie können eine Menge Routen Modul haben, etw. wie:
app.use('/api/users, userRoutes);
app.use('/api/books, bookRoutes); ......
app.use('/', index); // Where you render your Angular 4 (dist/index.html)
Becareful mit der Bestellung Sie schreiben, in meinem Fall nenne ich das Modul direkt unter app.use ('/', Index);
app.use(fallback(__dirname + '/dist/index.html'));
* Stellen Sie sicher, dass es vor, wo Sie 404 oder etw. so wie das .
Dieser Ansatz funktioniert gut für mich:) Ich bin mit EAN-Stack (Angular4 mit cli, Express, Node)
Sie sollten angular2 Routing mit Pfad nach # localhost verwenden: 3000/#/Suche. Auf diese Weise wird angular 2 die Anfrage erhalten, nicht der Server – binariedMe
aber angular2 generiert die Route ohne # – Rhushikesh
und sieht gut aus – Rhushikesh