#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. вероятно, его больше нет в вашей цепочке обработки и он игнорируется