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

时间:2016-02-10 22:34:07

标签: javascript node.js express

我有一个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的堆栈中删除完整的路由器对象?我可以使用他们的名字来做单独的中间件,但是像这个例子所示的路由显示,名称只是堆栈中的“路由器”。

1 个答案:

答案 0 :(得分:1)

我通过使用命名函数技巧来获取匿名函数并将其转换为命名函数。这样我就可以通过它的名字删除路由器了。