Rob*_*ndl 3 javascript node.js express
目前我正在尝试在运行时删除Node.js服务器应用程序的路由.
for (k in self.app.routes.get) {
if (self.app.routes.get[k].path + "" === route + "") {
delete self.app.routes.get[k];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
调用此方法后,self.app.routes对象中不再有路由.但在我尝试访问当前删除的路由后,我收到以下错误:
TypeError:无法在Router.matchRequest上调用undefined方法'match'(/var/lib/root/runtime/repo/node_modules/express/lib/router/index.js:205:17)
由于express.js的文档,这必须是正确的方法.
app.routes对象包含由关联的HTTP谓词映射的所有路由.此对象可用于内省功能,例如,Express在内部使用此功能不仅用于路由,还提供默认的OPTIONS行为,除非使用app.options().您的应用程序或框架也可以通过从这个对象中删除它们来删除路由.
有没有人知道如何在Node.js中正确删除运行时的路由?
非常感谢!
你得到的错误是因为路线仍在那里.delete不会删除元素,它只会将元素设置为undefined.删除使用splice(k,n)(从第k个元素中删除n个项目)
for (k in self.app.routes.get) {
if (self.app.routes.get[k].path + "" === route + "") {
self.app.routes.get.splice(k,1);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
仍然你的路线功能应该处理这个(选择接受哪个路径/网址),这会更好.
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |