You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

问题原因及解决办法

报错有两个核心原因:

  1. 路由定义顺序错误:模板引擎配置在路由之后,导致Express处理请求时还未加载引擎配置,无法识别渲染规则。
  2. 引擎设置键名错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:51:42