您好,我正在尝试在我的应用程序中使用 Express EJS 布局。一旦我尝试app.use(expressEjsLayouts)它就会抛出错误。如果没有它,应用程序工作得很好,但我想在我的模板中使用 ExpressEjs-Layouts。请友善,我对编码相当陌生:)我已经浏览了很多帖子,但找不到答案。这是我的 server.jsif (process.env.NODE_ENV !== 'production') { require('dotenv').config()}const express = require('express')const app = express()const passport = require('passport')const flash = require('express-flash')const session = require('express-session')const methodOverride = require('method-override')const indexRouter = require("./routes/index")app.use(express.urlencoded({ extended: false }))app.use(flash())app.use(session({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false}))app.use(passport.initialize())app.use(passport.session())const initializePassport = require('./passport-config')const expressEjsLayouts = require('express-ejs-layouts')initializePassport( passport, email => indexRouter.users.find(user => user.email === email), id => indexRouter.users.find(user => user.id === id)) // Set Template Engineapp.use(expressEjsLayouts) // THIS SEEMS TO BE WHAT MAKES IT CRASHapp.set("layout", "layouts/layout") app.set('view-engine', 'ejs')app.set("views", __dirname + "/views")// Static Filesapp.use(express.static("public"))app.use("/", indexRouter.router)app.use(methodOverride('_method'))app.listen(process.env.PORT || 3000)
2 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
您需要告诉express您正在使用哪个视图引擎。使用方法就可以做到app.set()
。它需要两个参数 1.您要设置的内容。在本例中为视图引擎 2.您希望使用的视图引擎的类型
例如app.set('view engine', 'ejs')
;或app.set('view engine', 'pug')
;
当年话下
TA贡献1890条经验 获得超9个赞
您可能需要将扩展名添加到视图名称中。
这在我的例子中引发了错误:
response.render("register", { message: existsMessage });
但这有效:
response.render("register.ejs", { message: existsMessage });
即使我在服务器顶部定义了这个:
app.set("view-engine", "ejs");
我的视图位于视图目录中
添加回答
举报
0/150
提交
取消