为了账号安全,请及时绑定邮箱和手机立即绑定

Express Js EJS 布局错误:未指定默认引擎且未提供扩展

Express Js EJS 布局错误:未指定默认引擎且未提供扩展

呼唤远方 2023-11-11 21:50:12
您好,我正在尝试在我的应用程序中使用 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')


查看完整回答
反对 回复 2023-11-11
?
当年话下

TA贡献1890条经验 获得超9个赞

您可能需要将扩展名添加到视图名称中。

这在我的例子中引发了错误:

response.render("register", { message: existsMessage });

但这有效:

response.render("register.ejs", { message: existsMessage });

即使我在服务器顶部定义了这个:

app.set("view-engine", "ejs");

我的视图位于视图目录中


查看完整回答
反对 回复 2023-11-11
  • 2 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信