Почему это происходит?

#node.js #express #mern

Вопрос:

Я новичок в самовыражении. Я разрабатываю приложение MERN, и во время создания сервера с помощью express я столкнулся с ошибкой.

 const express = require("express");
const app = express();
const PATH = require("path");
const LAYOUT = require("express-ejs-layouts");
const PORT = process.env.PORT || 3000;
 
app.use(LAYOUT);
app.set("views", PATH.join(__dirname,"/resources/views"));
app.set("view engine", "ejs");
app.get("/", (req, res) => {
  res.render('home');
});
app.listen(PORT, () => {
  console.log(`Listning on port ${PORT}...`);
});
 

Ошибка заключалась в

 Error: Failed to lookup view "layout" in views directory "C:UsersayondOneDriveDesktopmy_projectsmernresourcesviews"
    at Function.render (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpresslibapplication.js:580:17)
    at ServerResponse.render (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpresslibresponse.js:1012:7)
    at C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpress-ejs-layoutslibexpress-layouts.js:113:20
    at tryHandleCache (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesejslibejs.js:278:5)
    at View.exports.renderFile [as engine] (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesejslibejs.js:489:10)
    at View.render (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpresslibview.js:135:8)
    at tryRender (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpresslibapplication.js:640:10)
    at Function.render (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpresslibapplication.js:592:3)
    at ServerResponse.render (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpresslibresponse.js:1012:7)
    at ServerResponse.res.render (C:UsersayondOneDriveDesktopmy_projectsmernnode_modulesexpress-ejs-layoutslibexpress-layouts.js:77:18)
 

но когда я использую маршруты перед набором и использую метод, он работает так, как ожидалось. Почему это происходит?

 const express = require("express");
const app = express();
const PATH = require("path");
const LAYOUT = require("express-ejs-layouts");
const PORT = process.env.PORT || 3000;
app.get("/", (req, res) => {
    res.render('home');
  });
app.use(LAYOUT);
app.set("views", PATH.join(__dirname,"/resources/views"));
app.set("view engine", "ejs");
app.listen(PORT, () => {
  console.log(`Listning on port ${PORT}...`);
});
 

Комментарии:

1. Он ищет представление (файл), вызываемое layout в resourcesviews каталоге.

2. @SoftwareEngineer, тогда почему это работает, когда я меняю маршруты перед установкой и использую метод

3. вероятно, его больше нет в вашей цепочке обработки и он игнорируется