web-dev-qa-db-fra.com

Nodejs/Express: Erreur: échec de la recherche de la vue "erreur" dans le répertoire des vues

J'ai basculé mon moteur de template nodejs sur ejs (de jade). Lorsque je lance app.js avec mon modèle ejs, je reçois une série de journaux "Échec lors de la recherche de la vue" erreur "dans les vues".

Certains d'entre eux comprennent:

GET /css/bootstrap.min.css 500 12.588 ms - 1390
Error: Failed to lookup view "error" in views directory
...
GET /css/clean-blog.min.css
Error: Failed to lookup view "error" in views directory
...
GET /js/bootstrap.min.js
Error: Failed to lookup view "error" in views directory
...
GET /js/jquery.js
Error: Failed to lookup view "error" in views directory

Le problème est que beaucoup de ces dépendances sont incluses dans le modèle lui-même (inclus via des balises de script). Quel est le bon endroit pour les faire travailler en express? Il semble qu'express ne devrait finalement pas rechercher ces éléments dans le dossier views (car ils ne sont pas des vues).

8
ApathyBear

Assurez-vous que votre Express Express possède cette configuration. Pour la mise en page actuelle, cela ressemble à ce que vous avez.

// Require static assets from public folder
app.use(express.static(path.join(__dirname, 'public')));

// Set 'views' directory for any views 
// being rendered res.render()
app.set('views', path.join(__dirname, 'views'));

// Set view engine as EJS
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

Il est assez normal que les vues rendues par res.render() soient placées dans un répertoire "Vues" au niveau supérieur de votre application. Le express-generator utilise en fait cette configuration de vue. Vous pouvez changer cela en modifiant la ligne ci-dessous

// replace with the directory path below ./
app.set('views', path.join(__dirname, 'views'));
7
peteb

Il semble qu'Express ne trouve pas vos fichiers. Votre pauvre petit serveur veut donc renvoyer une erreur, mais votre fichier d'erreur est manquant dans le répertoire views.

Dans le répertoire views, il vous suffit de créer un fichier appelé error.jade.

Ensuite, vous devez rechercher où Express cherche encore vos fichiers.

1
Plaute