首页 > 解决方案 > 为什么会这样?

问题描述

我是新来表达的。我正在开发一个 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:\Users\ayond\OneDrive\Desktop\my_projects\mern\resources\views"
    at Function.render (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express\lib\application.js:580:17)
    at ServerResponse.render (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express\lib\response.js:1012:7)
    at C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express-ejs-layouts\lib\express-layouts.js:113:20
    at tryHandleCache (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\ejs\lib\ejs.js:278:5)
    at View.exports.renderFile [as engine] (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\ejs\lib\ejs.js:489:10)
    at View.render (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express\lib\view.js:135:8)
    at tryRender (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express\lib\application.js:640:10)
    at Function.render (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express\lib\response.js:1012:7)
    at ServerResponse.res.render (C:\Users\ayond\OneDrive\Desktop\my_projects\mern\node_modules\express-ejs-layouts\lib\express-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}...`);
});

标签: node.jsexpressmern

解决方案


推荐阅读