Wenn ich nur diesen Weg mit meiner allen anderen Routen zu verwenden, dass statische Dateien gut bedient:Node.js/Expess.js. Statische Router nicht, wenn mit Wildcard-Router verwendet erkannt
var public_dir = path.join(__dirname, 'public');
app.use('/public', express.static(public_dir));
Aber wenn ich unter diesen Zeilen hinzufügen - alle Anfragen sind Fang mit diesem Router (nicht die vorherige):
app.get('/*', function(req, res){
res.redirect('/#!' + req.path);
});
Es ist seltsam für mich, weil /public
Definition zuerst kommt. Aber alle Anfragen gehen zum zuletzt definierten /*
Request Handler. Wenn ich versuche, Seite http://127.0.0.1:3000/public/website/application.js
zu öffnen, werde ich zu http://127.0.0.1:3000/#!/public/website/application.js
umgeleitet. Warum passiert es und wie kann man diese Situation am besten lösen?
Vielen Dank!
Lösung ist einfach. Ich habe keine Arbeitsanweisung in der Liste von Middlewares.
app.use(app.router);
Dies ist ein Problem der URL-Routing erstellt. Aber es ist seltsam, dass node.js
mir nicht über "inkorrektes Setup" von Middleware erzählt hat.
Sie verwenden app.use mit dem ersten und app.get mit dem zweiten ..? – DrCord
Da @DrCord erwähnt wird, werden App. [Get | post | put | etc] -Methoden zum Router hinzugefügt. Wenn Sie Ihren Router zuerst anhängen, wird er daher zuerst verwendet. –
Wie Nick erwähnte Positionen von Router und statische Entscheidung Vorrang. Bitte zeigen Sie, wie Sie Router und statische (relative Positionen) verwenden. – user568109