我有一个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' 堆栈中删除完整的路由器对象?我可以使用它们的名称执行单个中间件,但是对于此示例所示的路由,名称只是堆栈中的"路由器"。
我通过使用命名函数技巧将匿名函数转换为命名函数来解决此问题。这样,我就可以按名称删除路由器。