Node.js 验证抛出错误

Node.js 验证抛出错误,node.js,command-line-interface,argv,vorpal.js,Node.js,Command Line Interface,Argv,Vorpal.js,我有一个vorpal命令,看起来像这样: 我正在运行1.9.5版 const vorpal = require('vorpal')() vorpal .command('temp [dev]') .validate(function() { return false }) .action(function() { ... }) vorpal.parse(process.argv) 当我在终端中运行pnt temp时,我会抛出以下错误: /U

我有一个vorpal命令,看起来像这样: 我正在运行1.9.5版

const vorpal = require('vorpal')()

vorpal
   .command('temp [dev]')
   .validate(function() {
     return false
   })
   .action(function() {
     ...
   })

vorpal.parse(process.argv)
当我在终端中运行
pnt temp
时,我会抛出以下错误:

/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:169
          throw new Error(err);
          ^

Error: null
    at EventEmitter.<anonymous> (/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:169:17)
    at callback (/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:830:22)
    at /Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:961:7
    at EventEmitter._commandSetCallback (/Users/samm/Sites/pnt/node_modules/vorpal/dist/session.js:446:5)
    at EventEmitter.session.completeCommand (/Users/samm/Sites/pnt/node_modules/vorpal/dist/session.js:526:12)
    at onCompletion (/Users/samm/Sites/pnt/node_modules/vorpal/dist/session.js:456:10)
    at EventEmitter.session.execCommandSet (/Users/samm/Sites/p nt/node_modules/vorpal/dist/session.js:471:5)
    at EventEmitter.vorpal._exec (/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:960:18)
    at EventEmitter.vorpal._execQueueItem (/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:751:17)
    at EventEmitter.vorpal._queueHandler (/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:735:10)
/Users/samm/Sites/pnt/node\u modules/vorpal/dist/vorpal.js:169
抛出新错误(err);
^
错误:null
在黄昏时分。(/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:169:17)
在回调时(/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:830:22)
at/Users/samm/Sites/pnt/node_modules/vorpal/dist/vorpal.js:961:7
在EventEmitter._commandSetCallback(/Users/samm/Sites/pnt/node_modules/vorpal/dist/session.js:446:5)
在EventEmitter.session.completeCommand(/Users/samm/Sites/pnt/node_modules/vorpal/dist/session.js:526:12)
完成时(/Users/samm/Sites/pnt/node\u modules/vorpal/dist/session.js:456:10)
在EventEmitter.session.execCommandSet(/Users/samm/Sites/pnt/node_modules/vorpal/dist/session.js:471:5)
在EventEmitter.vorpal.\u exec(/Users/samm/Sites/pnt/node\u modules/vorpal/dist/vorpal.js:960:18)
在EventEmitter.vorpal.\u execQueueItem(/Users/samm/Sites/pnt/node\u modules/vorpal/dist/vorpal.js:751:17)
位于EventEmitter.vorpal.\u queueHandler(/Users/samm/Sites/pnt/node\u modules/vorpal/dist/vorpal.js:735:10)

我承认这看起来很难看,他们可能会在未来的版本中修复这一问题,但这看起来是正确的行为

返回
false
.validate
中的字符串将引发错误,因为这意味着您不接受参数。如果您返回一个字符串,该字符串将显示给用户(
返回“我不希望没有scrubs。”

因此,从您发布的代码来看,这是正确的行为


如果您希望
.validate
中的错误消息有所不同,我建议您在vorpal的问题跟踪器上发布一个问题。(尽管我可以看到你已经这样做了。)

我承认这看起来很难看,他们可能会在未来的版本中修复这一问题,但这看起来是正确的行为

返回
false
.validate
中的字符串将引发错误,因为这意味着您不接受参数。如果您返回一个字符串,该字符串将显示给用户(
返回“我不希望没有scrubs。”

因此,从您发布的代码来看,这是正确的行为


如果您希望
.validate
中的错误消息有所不同,我建议您在vorpal的问题跟踪器上发布一个问题。(尽管我可以看到您已经这样做了)。

您如何初始化
vorpal
?请用该代码更新您的问题。我已更新了原始问题您如何初始化
vorpal
?请使用该代码更新您的问题。我已更新了原始问题如果我使用字符串而不是仅返回false,我会记录文本,然后再次出现相同的错误,这看起来不像是标准行为您没有在问题中指定不允许参数时要采取的行为。不管怎样,这就是框架的功能,看起来这是一个预期和想要的行为。我只是认为这是一个bug,就像我在早期版本中宣誓的那样,如果验证没有通过,它将使用您在其他注释返回中输入的任何字符串退出命令。验证是在2015年11月/12月实施的,建议的方法是在运行
.parse
后检查参数。因此没有抛出错误,但是你可以自由地执行你想要的操作。啊,对了,也许我错了validate,那么,我不会向validate函数传递任何参数,我实际上正在运行另一个函数,对API进行授权如果我使用字符串而不是返回false,我会记录文本,然后再次出现相同的错误,这看起来不像是标准行为。当您不允许参数时,您没有在问题中指定您想要的行为。不管怎样,这就是框架的功能,看起来这是一个预期和想要的行为。我只是认为这是一个bug,就像我在早期版本中宣誓的那样,如果验证没有通过,它将使用您在其他注释返回中输入的任何字符串退出命令。验证是在2015年11月/12月实施的,建议的方法是在运行
.parse
后检查参数。因此没有抛出错误,但是您可以自由地执行您想要的操作。啊,对了,也许我错了验证,那么我不会将任何参数传递给验证函数,我实际上运行的是另一个针对api进行授权的函数