Node.js Express报错:未指定默认模板引擎且未提供扩展名
Express渲染视图报错:No default engine was specified and no extension was provided.
报错信息
Error: No default engine was specified and no extension was provided. at new View (D:\Coding\pizza\node_modules\express\lib\view.js:61:11) at Function.render (D:\Coding\pizza\node_modules\express\lib\application.js:587:12) at ServerResponse.render (D:\Coding\pizza\node_modules\express\lib\response.js:1039:7) at D:\Coding\pizza\server.js:9:9 at Layer.handle [as handle_request] (D:\Coding\pizza\node_modules\express\lib\router\layer.js:95:5) at next (D:\Coding\pizza\node_modules\express\lib\router\route.js:144:13) at Route.dispatch (D:\Coding\pizza\node_modules\express\lib\router\route.js:114:3) at Layer.handle [as handle_request] (D:\Coding\pizza\node_modules\express\lib\router\layer.js:95:5) at D:\Coding\pizza\node_modules\express\lib\router\index.js:284:15 at Function.process_params (D:\Coding\pizza\node_modules\express\lib\router\index.js:346:12)
服务器配置代码
const express = require('express') const app = express() const ejs = require('ejs') const path = require('path') const expressLayout = require ('express-ejs-layouts') const PORT = process.env.PORT || 3000 app.get('/', (req, res)=> { res.render('home') }) //set template engine app.use(expressLayout) app.set('views',path.join(__dirname, '/resources/views')) app.set('view-engine','ejs') app.listen(PORT, () => { console.log(`Listening on port ${PORT}`) })
预期页面输出:Hello from home Page
问题原因及解决办法
报错有两个核心原因:
- 路由定义顺序错误:模板引擎配置在路由之后,导致Express处理请求时还未加载引擎配置,无法识别渲染规则。
- 引擎设置键名错误:Express中设置视图引擎的正确键名是
view engine(空格分隔),而非view-engine(横杠分隔)。
修改后的代码
const express = require('express') const app = express() const ejs = require('ejs') const path = require('path') const expressLayout = require ('express-ejs-layouts') const PORT = process.env.PORT || 3000 // 先配置模板引擎 app.use(expressLayout) 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(`Listening on port ${PORT}`) })
额外验证
确保resources/views目录下存在home.ejs文件,内容为:
Hello from home Page
内容的提问来源于stack exchange,提问作者Sundaram
相关产品推荐
相关产品推荐

