it-swarm.com.de

Nodejs/Express: Fehler: Ansicht "Fehler" im Verzeichnis "Views" konnte nicht gesucht werden

Ich habe meine nodejs-Template-Engine auf ejs (von Jade) umgestellt. Wenn ich meine app.js mit meiner EJS-Vorlage ausführen, erhalte ich eine Reihe von "Fehler bei Lookup-Ansicht" Fehler "in Ansichten".

Einige davon beinhalten:

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

Viele dieser Abhängigkeiten sind jedoch in der Vorlage selbst enthalten (über Skript-Tags eingeschlossen). Was ist der richtige Ort, um diese zum Ausdruck zu bringen? Es scheint, als ob express letztendlich nicht im views-Ordner nach diesen suchen sollte (da sie keine Ansichten sind).

8
ApathyBear

Vergewissern Sie sich, dass Ihre Express-App über dieses Setup verfügt. Das aktuelle Layout klingt wie Sie es haben.

// 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');

Es ist ziemlich normal, dass Ansichten, die von res.render() gerendert werden, in einem 'Views'-Verzeichnis auf der obersten Ebene Ihrer App abgelegt werden. Der express-generator verwendet tatsächlich diese Ansichtseinstellung. Sie können dies ändern, indem Sie die untere Zeile ändern

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

Es scheint, dass Express Ihre Dateien nicht findet, daher möchte Ihr kleiner Server einen Fehler zurückgeben, aber Ihre Fehlerdatei fehlt im Verzeichnis views.

Im Ansichtenverzeichnis müssen Sie nur eine Datei mit dem Namen error.jade erstellen.

Dann müssen Sie suchen, wo Express Ihre Dateien noch durchsucht.

1
Plaute

Ich habe mein Problem mithilfe des folgenden Codes behoben.

    // Require static assets from public folder
app.use(express.static(path.join(__dirname, 'public')));
// Set view engine as EJS
app.engine('ejs', require('ejs').renderFile);
app.set('view engine', 'ejs');
// Set 'views' directory for any views 
// being rendered res.render()
app.set('views', path.join(__dirname, ''));
app.use('/form', express.static(__dirname + '/index.html'));
0
Nagnath Mungade