Ho scavato questo argomento per un po 'di tempo e ho provato un sacco di metodi che non funzionano. Se si utilizza angular-cli e con express, ho trovato una soluzione se la risposta scelta non funziona per voi.
Prova questo modulo nodo: express-history-api-fallback
[angolari] modificare il file app.module.ts, sotto @NgModule> importazioni come segue:
RouterModule.forRoot(routes), ...
Questo è il cosiddetto: "Strategia Location"
probabilmente erano usando "Hash Location Strategy" come questo:
RouterModule.forRoot(routes, { useHash: true }) , ...
[Express & Nodo] In pratica, è necessario gestire correttamente l'URL, quindi se si desidera chiamare "api/dati" ecc. Che non sia in conflitto con la strategia di posizione HTML5.
Nel file server.js (se è stato utilizzato generatore espresso, ho rinominarlo come middleware.js per chiarezza)
Fase 1. - Richiede l'express-history-api-fallback module.
const fallback = require('express-history-api-fallback');
Passaggio 2.Potresti avere un sacco di percorsi modulo, sth. come:
app.use('/api/users, userRoutes);
app.use('/api/books, bookRoutes); ......
app.use('/', index); // Where you render your Angular 4 (dist/index.html)
Becareful con l'ordine che si sta scrivendo, nel mio caso io chiamo il diritto del modulo sotto app.use ('/', indice);
app.use(fallback(__dirname + '/dist/index.html'));
* Assicurarsi che sia prima dove si gestisce 404 o sth. come quello .
questo approccio funziona per me:) Sto usando pila EAN (Angular4 con cli, espresso, Node)
Si dovrebbe usare il routing angular2 percorso utilizzando dopo il # come localhost: 3000/#/ricerca. In questo modo angolare 2 otterrà la richiesta, non il server – binariedMe
ma angular2 genererà il percorso senza # – Rhushikesh
e il suo aspetto è – Rhushikesh