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

Javascript 在vorpal操作期间调用另一个函数,javascript,node.js,vorpal.js,Javascript,Node.js,Vorpal.js,我刚刚开始使用Vorpal.js来帮助构建一个CLI工具,该工具最终将针对API端点执行HTTP请求 我让它提问和验证数据输入,但一旦我有了输入,我就让rouble调用另一个方法,该方法从请求的答案中收缩端点url 这是我的密码: function apiEndpoint (env) { if (env === 'INT') { return API_ENDPOINT_INT; } else if (env === 'TEST') { re

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

我让它提问和验证数据输入,但一旦我有了输入,我就让rouble调用另一个方法,该方法从请求的答案中收缩端点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工具只是存在


我想可能是范围问题吧?

不。可能是无声地失败了。始终确保你的承诺得到兑现

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();
      });
  })

此时此刻,我完全忘记了这一点。结果我发现一个变量是未定义的!谢谢