Javascript Node.js在服务器运行时删除路由

Javascript Node.js在服务器运行时删除路由,javascript,node.js,express,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; } } 调用此方法后,self.app.routes对象中不再存在路由。但在尝试访问当前删除的路由后,出现以下错误: TypeError:无法调用未定义的方法

目前我正在尝试删除一个 运行时上的Node.js服务器应用程序

for (k in self.app.routes.get) {
  if (self.app.routes.get[k].path + "" === route + "") {
    delete self.app.routes.get[k];
    break;
  }
}
调用此方法后,self.app.routes对象中不再存在路由。但在尝试访问当前删除的路由后,出现以下错误:

TypeError:无法调用未定义的方法“match” 在Router.matchRequest(/var/lib/root/runtime/repo/node_modules/express/lib/Router/index.js:205:17)

由于express.js的文档,这必须是正确的方法

app.routes对象包含由关联HTTP谓词映射的所有路由。此对象可用于内省功能,例如,除非使用app.OPTIONS(),否则Express在内部不仅用于路由,还用于提供默认选项行为。您的应用程序或框架也可以通过从该对象中删除路由来删除路由

有人知道如何在Node.js中正确删除运行时的路由吗


非常感谢

您遇到的错误是因为路由仍然存在
delete
不会删除元素,它只会将元素设置为
undefined
。若要移除,请使用拼接(k,n)(从第k个元件移除n个项目)


不过,您的路由功能应该处理这个问题(选择接受哪个路径/url),哪个更好。

您能确认您的Express版本吗?对此表示抱歉。我的版本是:“3.1.0”
for (k in self.app.routes.get) {
  if (self.app.routes.get[k].path + "" === route + "") {
    self.app.routes.get.splice(k,1);
    break;
  }
}