在vorpal动作期间调用另一个函数

时间:2017-08-04 15:18:44

标签: javascript node.js vorpal.js

我刚刚开始使用Vorpal.js帮助构建一个CLI工具,最终将针对API端点执行HTTP请求。

我有问题和验证数据输入,但是一旦我有输入,我就有卢布调用另一种方法,它根据请求的答案收缩端点URL。

这是我的代码:

    function apiEndpoint (env) {
    if (env === 'INT') {
        return API_ENDPOINT_INT;
    } else if (env === 'TEST') {
        return API_ENDPOINT_TEST;
    } else if (env === 'LIVE') {
        return API_ENDPOINT_LIVE
    }
}

function constructRequestURL (params) {
    let API_ENDPOINT = apiEndpoint(params.env);

    let requestURL = `${API_GATEWAY}${API_ENDPOINT}?asset_uri=${params.asset_uri}&${site_name}&${asset_type}&${event_type}`

    return requestURL;
}

vorpal
  .command('render')
  .option('--dave')
  .action(function (args, cb) {
      const self = this;
      this.prompt(questions)
      .then (function (result) {
        //   self.log(`Okay, here are you answers ${JSON.stringify(result)}`);
          let requestURL = constructRequestURL(result);
          self.log(`Request URL: ${requestURL}`);
          cb();
      })
  })


vorpal
  .delimiter('AMP ReRenderer$')
  .show();

此评论行有效

//   self.log(`Okay, here are you answers ${JSON.stringify(result)}`);

如果调用constructUrl函数没有任何反应,cli工具就会存在。

我想这可能是范围问题?

1 个答案:

答案 0 :(得分:1)

没有。它可能会默默地失败。始终确保您的承诺有catch

vorpal
  .command('render')
  .option('--dave')
  .action(function (args, cb) {
      const self = this;
      this.prompt(questions)
      .then (function (result) {
        //   self.log(`Okay, here are you answers ${JSON.stringify(result)}`);
          let requestURL = constructRequestURL(result);
          self.log(`Request URL: ${requestURL}`);
          cb();
      }).catch(err => {
        self.log(err);
        cb();
      });
  })