Ich arbeite an einer einzigen Seite Web-App mit Node + Express und Handelbars für die Tempalierung. Alles, was zur Zeit funktioniert gut von einem index.html, die aus einer ziemlich Standard server.js Datei serviert:Node + Express mit statischem HTML. Wie leiten Sie alle Anfragen an index.html weiter?
var express = require('express');
var server = express();
server.use(express.static(__dirname + '/public'));
var port = 10001;
server.listen(port, function() {
console.log('server listening on port ' + port);
});
Das funktioniert perfekt, wenn sie von http://localhost:10001/
geladen. Mein Problem ist, dass ich Push-Zustände in der App verwende, daher zeigt der Browser möglicherweise eine URL wie http://localhost:10001/foo/bar
und wenn ich die Seite aktualisiere, bekomme ich den Fehler Cannot GET /foo/bar
, da es keine Route dafür gibt.
Also meine Frage, und verzeihen Sie meine unglaubliche noobishness, wenn es um Knoten geht, kann ich es so alle Anfragen Route zu index.html machen? Das JavaScript in meiner App kann mit dem Anzeigen des richtigen Inhalts basierend auf URL-Parametern beim Laden der Seite umgehen. Ich möchte keine benutzerdefinierten Routen definieren, da die Anzahl groß wäre und sich die Pfade für sie dynamisch ändern könnten.
Dies funktioniert, mit dem Bearbeiten ich gemacht, außer es auch auf die URL für meine CSS-Datei handelt, so dient sie index.html anstelle der CSS-Datei. Gibt es eine Möglichkeit, dies nur durch MIME-Typ (dh nur auf HTML) anzuwenden. – JPollock
@JPollock registrieren Middleware für öffentliche Dateien vor Ihrer Catch-All-Route. Auf diese Weise werden Anfragen an css/js vor Ihrer Indexroute abgeholt. –