Ho fatto un presupposto qui che i percorsi sono dichiarati in questo ordine:
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
Se questo è davvero il caso, allora il seguente suggerimento vale:
Il problema qui è l'applicazione .get ('/ *', ...) intercetterà tutte le richieste che corrispondono, che è fondamentalmente tutto. Il middleware statico non avrà la possibilità di servire i file.
Se si rimuove tale percorso, le cose dovrebbero funzionare come index.html
è già nella directory public
e può essere servito dal middleware statico.
Per una buona spiegazione di come funziona, vedere la risposta a questa domanda: node.js/express.js - How does app.router work?
Aggiornamento in base aggiunte alla domanda di cui sopra:
Hai dichiarato questo come il comportamento attuale di il tuo server:
sembra che tutti i javascript che il client richiede vengano scaricati con le informazioni sul file index.html.
Hai fatto la domanda:
Come posso fare un download di successo dei file statici/JS CSS?
con questo requisito
Voglio tutte le richieste al server su una rotta otterrà index.html e tutti i suoi JS CSS & assosiciated con.
La tua domanda e il requisito sono opposti l'uno all'altro. Il server invierà al client esattamente ciò che viene detto/configurato. Restituirà sempre index.html
che è esattamente ciò che afferma il tuo requisito, o servirà con successo sia lo index.html
sia qualsiasi riferimento CSS/Javascript che è ciò che era la tua affermazione originale.
In uno dei vostri commenti qui sotto che hai dichiarato:
il motivo che voglio farlo, è perché sto utilizzando i modelli, e index.html avvolge ogni modello. Sto usando angular sul client, e sto iniziando a capire che dovrò usare un motore di rendering per raggiungere questo obiettivo. Ancora una volta, il mio cliente angolare definisce l'URL parziale, e quando invia la richiesta a: '/ parziale/campione' ho bisogno del index.html per avvolgere la 'sample.html' per esempio
mie ipotesi basate su questa dichiarazione (si prega di correggere se sbagliato)
- si utilizza lato client modelli
- I file si recupera dal server sono statici (per esempio, hanno bisogno di essere servito come è dalla server)
- I percorsi sono attualmente dichiarati in questo ordine
- app.use (app.router);
- app.use (express.static (path.join (__ dirname, 'public')));
- non sta facendo alcun template lato server (cioè tutto si trova sotto
public
da qualche parte)
Se queste ipotesi sono corrette, la correzione è di fare quello che originariamente proposto e rimuovere questo percorso:
app.get('/*', index);
Se si esegue questa operazione (assumendo le risorse si fa riferimento correttamente):
- il tuo
index.html
verrà recuperato dal server tramite il middleware statico.
- Ogni css/js file che hai fatto riferimento in index.html verrà restituito dal server tramite il middleware statica
- Eventuali richieste per caricare file di modello (come
sample.html
) verranno soddisfatti dal vostro middeware statica ed è tornato a il cliente senza modifiche
Se si vuole servire solo i file statici, non si usa il middleware del router, è semplice :) In realtà, non c'è nemmeno bisogno di Express per questo scopo. – gustavohenke
quindi come posso farlo se voglio render index.html che contiene js? – ohadinho
https://npmjs.org/package/http-server – gustavohenke