从 Express.js 路由堆栈中删除路由器



我有一个Express.js项目,我允许在运行时加载和卸载插件。插件可以访问 Expess.js 路由器堆栈以注册其路径,就像普通脚本一样

,例如:
var express = require('express');
var router = express.Router();
module.exports = function(projectCoreObject) {
    function Plugin() { }
    // Plugin initialize called when a plugin is loaded.
    Plugin.Initialize = function (done) {
        // Register the router..
        projectCoreObject.app.use('/', router);
    };
    // GET - /test
    router.get('/test', function(req, res, next) {
        res.send('Success!');
    });
    return Plugin;
};

虽然这一切都很好用,但我在卸载从堆栈中删除路由器的插件时遇到了问题。

有没有正确的方法可以在运行时从 Express.js' 堆栈中删除完整的路由器对象?我可以使用它们的名称执行单个中间件,但是对于此示例所示的路由,名称只是堆栈中的"路由器"。

我通过使用命名函数技巧将匿名函数转换为命名函数来解决此问题。这样,我就可以按名称删除路由器。

最新更新