Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CLI中通配符路由的异常行为_Javascript_Node.js_Routes_Command Line Interface_Flatiron.js - Fatal编程技术网

Javascript CLI中通配符路由的异常行为

Javascript CLI中通配符路由的异常行为,javascript,node.js,routes,command-line-interface,flatiron.js,Javascript,Node.js,Routes,Command Line Interface,Flatiron.js,我的CLI应用程序中有以下路由: system system * system info system info * system settings system settings * system tunables system tunables * system logging system logging * system logging settings system logging settings * 想要这样的行为: 如果输入系统命令->执行系统处理程序 如果输入“系统任何内容”

我的CLI应用程序中有以下路由:

system
system *
system info
system info *
system settings
system settings *
system tunables
system tunables *
system logging
system logging *
system logging settings
system logging settings *
想要这样的行为:

如果输入系统命令->执行系统处理程序 如果输入“系统任何内容”\u但\u已配置”\u路由命令->exec system*处理程序,作为“任何内容”\u但\u已配置”\u路由除以下内容以外的任何内容:

信息 设置 可调 伐木

该问题与app.cmd执行顺序有关:

如果我按与上面相反的顺序注册路由,则处理程序将正确执行

如果我按照与上面相同的顺序注册路由,如果我执行system info,则会触发system*的处理程序,而不是system info

有没有关于如何克服这一问题的建议


我目前正在通过循环和构造一个反向数组,然后再次循环来解决这个问题,但是对于一个简单的CLI应用程序来说,这需要很多时间,而且这很麻烦,所以我正在寻找一个不同的解决方案。

不知道您使用的模块,这个问题是有意义的,它是在首次发现时匹配的,不是最具体的。。。但您不必完全重新排列列表,只需将通配符放在特定条目之后,如下所示:

system
system info
system info *
system settings
system settings *
system tunables
system tunables *
system logging
system logging settings
system logging settings *
system logging *
system *

谢谢你的回答。我用的是扁铁,见标签;在您的解决方案中,这与我现在所做的几乎相同。我的解决方案更容易实现,也更难实现。我所要求的是提供一个解决方案,以某种方式修复该行为,而不破坏订单。我正在使用flatiron cli插件。我看到您正在使用flatiron,我只是没有使用它的经验,但我确实查找了它。这种行为没有被破坏,它是有效的。当找到匹配项时,它停止查找。但是,您的解决方案已损坏,因为当您尝试执行系统日志记录设置时,它将执行系统日志记录*。最终,路由逻辑来自于,如果你在那里看到任何东西,让你路由到最具体的,而不是首先找到的,那么这就是你要寻找的,但我没有看到任何东西。我的解决方案没有被破坏,我正确地测试了它。检查并执行节点app.js系统日志记录设置以进行验证。是的,我也检查了director,但没有发现任何相关的东西。后退和前进设置不是我想要的。看来这毕竟不是一个简单的问题。我将平铁开发人员直接然后。感谢您抽出时间: