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

如何获取Express应用中已注册的所有视图引擎扩展名?

获取Express中所有已注册的视图引擎扩展名

刚好碰到过类似的需求,其实Express在app对象里藏了个很实用的内部属性——app.engines,它能直接帮你拿到所有已注册的视图引擎扩展名,完美解决你遇到的问题。

核心原因

你提到的app.get('view engine')只能获取当前默认的视图引擎扩展名,因为每次调用app.set('view engine', xxx)都会覆盖之前的设置,没法拿到所有通过app.engine()注册的引擎。而app.engines是Express内部维护的对象,专门存储所有你注册过的视图引擎,键就是对应的文件扩展名。

具体实现方法

直接通过Object.keys(app.engines)就能提取出所有已注册的视图引擎扩展名数组:

const express = require('express');
const app = express();

// 注册多个视图引擎(对应你示例中的代码)
app.engine('pug', require('pug').__express);
app.engine('jade', require('jade').__express);

// 设置默认视图引擎(多次设置只会保留最后一个)
app.set('view engine', 'pug');
app.set('view engine', 'jade');

// 获取所有已注册的视图引擎扩展名
const registeredEngines = Object.keys(app.engines);
console.log(registeredEngines); // 输出: ['pug', 'jade']

额外小技巧

  • 如果你需要检查某个特定扩展名是否已注册,可以用:
    const hasJadeEngine = app.engines.hasOwnProperty('jade');
    console.log(hasJadeEngine); // 输出: true
    
  • 这个方法在编写中间件时特别有用,比如你想自动根据视图文件扩展名匹配对应的引擎,或者做全局的视图渲染拦截处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:49:40