我有一个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的堆栈中删除完整的路由器对象?我可以使用他们的名字来做单独的中间件,但是像这个例子所示的路由显示,名称只是堆栈中的“路由器”。
答案 0 :(得分:1)
我通过使用命名函数技巧来获取匿名函数并将其转换为命名函数。这样我就可以通过它的名字删除路由器了。