Comment faire exprès statique répertoires de travail avec une erreur 404 route?
J'ai un code qui ressemble à ceci:
app.configure(function() {
app.set("views", __dirname + "/views");
app.set("view engine", "ejs");
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.logger());
app.use(app.router);
app.use(express.static(__dirname + "/public"));
});
//Routes
app.get("/", function(req, res) {
res.render("index.ejs", {locals: {
title: "Welcome"
}});
});
//Handle 404
app.get("/*", function(req, res, next) {
next("Could not find page");
});
Le problème que j'ai c'est que je ne peux pas accéder à quoi que ce soit dans la /public static répertoire: tout se fait attraper par la 404 route. Ai-je raté quelque chose au sujet de la façon dont cela est censé fonctionner?
OriginalL'auteur Jim Wang | 2011-10-21
Vous devez vous connecter pour publier un commentaire.
Vous êtes en train de faire
Ce que vous voulez faire est de
Puisque vous avez un fourre-tout de l'itinéraire dans
app.router
il doit être inférieur à toute autre chose. sinon, l'attraper toutes itinéraire en effet tout voir et le reste de la middleware est ignoré.Comme une part attraper toutes les routes sont mauvaises.
En fait j'ai donné un coup et ça ne fonctionne pas...Nœud se bloque et refuse de servir la page d'accueil. Ce que vous êtes censé utiliser à la place de la capture de tous les parcours de la mise en œuvre d'une page erreur 404 personnalisée?
vous devez ajouter un fourre-tout routeur comme
app.use(catchAll)
et pas dans votre routeur.OriginalL'auteur Raynos
Une meilleure solution serait de placer le code suivant après tous les appels à app.utilisation:
Ou une fonction similaire.
Ce faire, au lieu d'utiliser
app.get("/*", ...
OriginalL'auteur oferei
Je le fais d'une manière légèrement différente. Si vous regardez le middleware de code pour le fichier statique serveur, il permet une fonction de callback qui est appelée avec des erreurs. Seul hic, c'est que vous devez l'objet de la réponse à envoyer quelque chose d'utile sur le serveur. J'ai donc effectuer les opérations suivantes:
Essentiellement ce qui se passe est si il y a une erreur, il rend ma jolie page d'erreur et les journaux quelque chose afin que je puisse debug quelque part.
OriginalL'auteur Sugendran