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

Express路由报错:未指定默认引擎且无扩展名,求排查方案

问题排查与解决

这个报错的核心原因大概率出在你的视图引擎配置上,结合常见场景给你逐一梳理解决办法:

1. 视图引擎配置键名写错了

你写的app.set("view_engine", "ejs");是错误的,Express识别的配置键是**view engine**(空格分隔,不是下划线)。正确写法:

app.set("view engine", "ejs");
app.set("views", "./views");

Express只会读取view engine这个配置项来确定默认模板引擎,下划线命名的配置会被直接忽略,这就导致系统找不到默认引擎,触发你看到的报错。

2. 确认EJS依赖已安装

如果还没安装EJS模板引擎,先执行安装命令:

npm install ejs

依赖缺失的话,哪怕配置写对了也无法正常渲染模板。

3. 检查路由的渲染逻辑

查看你的路由代码(比如pages.js里的首页路由),确保用的是res.render()方法而非res.sendFile(),同时渲染的文件名要正确:

// 正确示例(首页路由)
router.get("/", (req, res) => {
  res.render("index"); // 不需要加.ejs后缀,配置view engine后会自动补全
});

如果渲染时写错了文件名或路径,也可能触发类似错误。

4. 确保views路径绝对正确

app.set("views", "./views")是相对当前Node进程启动目录的路径,如果你从其他目录(比如父目录)启动项目,这个相对路径会失效。建议改成绝对路径,彻底避免路径问题:

const path = require("path");
app.set("views", path.join(__dirname, "views"));

按上面的步骤修改后,重启服务再访问localhost:5000,应该就能解决这个问题。

内容的提问来源于stack exchange,提问作者aybb_2000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:31:34