Échec de la recherche en vue node.js ejs modèle, tandis que le modèle n'est renommé
J'ai un node.js application de rendu dans ejs 3 modèle.
laissez 's dire -il y a un modèle, bien sûr.ejs, il a bien fonctionné dans la node.js.
res.render('course', locals);
Cependant, aujourd'hui, quand j'ai essayé de modifier le contenu, let 's dis - cours.ejs, il ne prend pas effet, il n'y a pas d'erreur avec node.js l'application et les données transmises au modèle est tout droit.
J'ai même copier-collé le contenu de ce modèle, et de créer un nouveau modèle avec un nom différent - course1.ejs. et modifier mon code pour
res.render('course1', locals);
puis lorsque l'application s'exécute de nouveau, il s'affiche un message d'erreur indiquant que
D'erreur: Échec de la recherche de la vue "course1" modèle.
Le code dans node.js et le modèle sont tous de droite, il est censé travailler, dans les voies ci-dessus. Pourquoi il ne fonctionne pas aujourd'hui. J'ai mon ejs la version 0.8.3, tout en express dans 3.1.0 et node.js dans 0.10.0
C'est ma configuration de l'application.
app.configure(function(){
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
app.set('views',__dirname+'/views');
app.use(express.favicon(__dirname + '/public/favicon.ico'));
app.use(express.compress({
filter: function (req, res) {
return /json|text|javascript|css/.test(res.getHeader('Content-Type'));
},
level: 9
}));
app.use(express.bodyParser({uploadDir:__dirname+'/public/uploads',keepExtensions: true,limit: '50mb'}));
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
cookie: { maxAge: 24 * 60 * 60 * 1000 }
,store: sessionStore
,secret: config.sessionSecret
,key: 'express.sid'
,clear_interval: 3600
}));
app.use(express.csrf());
app.use(function(req, res, next){
res.locals.token = req.session._csrf;
next();
});
app.use(express.static(__dirname+'/public'));
}
mes fichiers statiques est dans le dossier public, et tous les modèles sont dans le dossier de vue.
Je me demande quelqu'un a rencontré ce genre de problème avant
course.html
quelque part c'est desservie par express.static
? Aussi, montrez-nous votre demande Expresse de l'installation (app.use
, app.configure
, etc).Dans mon fichier statique dossier, il y a juste le css, js, des fichiers d'image, pas de code html. et tous les modèles, il peut montrer, mais quand changé, il ne sera pas mise à jour le editted contenu
Ouais je me suis trompé avec le
express.static
suggestion, mais si vous avez un course.html
dans votre vues dossier, il pourrait être à l'origine des problèmes. Voir ma réponse.OriginalL'auteur user824624 | 2013-04-19
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que cette configuration peut fonctionner si vos modèles ont la
.ejs
extension:L'aide de cette configuration, l'Express va chercher
TEMPLATENAME.html
lorsque vous appelezres.render('TEMPLATENAME', ...)
, et pasTEMPLATENAME.ejs
. Pour cela, vous avez besoin de ceci:De sorte que la
course1
partie résolu: l'Express était à la recherche pourcourse1.html
, qu'il ne pouvait pas trouver, donc il serait générer l'erreur que vous avez obtenu (Failed to lookup view...
).Cependant, je ne vois pas comment le rendu
course.ejs
pourrait avoir travaillé. Vous avez peut-être une autre voie, qui est en charge de la demande que vous faites des tests? Ou vous avez uncourse.html
dans le dossier vues (en plus de l'course.ejs
)?De mon point de vue le dossier de modèle, il y a course_new.html, course_description.html, course_recent.html, additionly ces format html inclure l'ejs en fonction des modèles
Le mélange
.ejs
fichiers avec.html
fichiers peuvent être la cause de vos problèmes. La meilleure solution serait de décider ce que votre modèle les noms de fichiers doivent obtenir l'extension, et de n'utiliser que de l'extension dans leviews
dossier.OriginalL'auteur robertklep