Node.js';对象不是函数';对于第二次运行时的有效负载()

Node.js';对象不是函数';对于第二次运行时的有效负载(),node.js,bluebird,Node.js,Bluebird,此代码用于在用户输入用户名/密码时返回令牌。如果他们输入了错误的信息并得到了401,他们会得到提示,再次尝试使用.catch(函数(err){callApiToken();})。但是,在第二次传递时,我将获得未处理的拒绝类型错误:对象不是有效负载(用户,传递)函数的函数。为什么会这样 function payload(user, pass) { return payload = { "thePassword": { "usernam

此代码用于在用户输入用户名/密码时返回令牌。如果他们输入了错误的信息并得到了401,他们会得到提示,再次尝试使用
.catch(函数(err){callApiToken();})
。但是,在第二次传递时,我将获得
未处理的拒绝类型错误:对象不是
有效负载(用户,传递)
函数的函数。为什么会这样

function payload(user, pass) {
    return payload = {
            "thePassword": {
                "username": user,
                "password": pass
           } 
      }
}

function postAsync(url, payload) {
    return new Promise(function(resolve, reject) {
        rest.postJson(url, payload)
        .on('fail', function(data, response) {
            httpFail(data, response, reject);
            reject(response.statusCode);
         })
        .on('error', function(err, response) {
            conError(err, response);
            reject(err);
         })
        .on('success', function(data, response) {
            writeToFile(data, response);
            resolve();
        });
    });
}



function getPassword(user) {
    return readAsync({prompt: "Password: ", silent: true, replace: "*" })
        .then(function(pass) {
                //PAYLOAD() IS WHERE THE ERROR IS AT SECOND TIME
                //BEING CALLED
            return postAsync(URL, payload(user[0], pass[0]));
        });
}
如何称呼它:

callApiToken()
    .then(function() { refreshToken(); })
    .catch(function(err) {
        callApiToken();
    });

您的问题是有效负载功能本身,特别是这一部分:

return payload = {
    "thePassword": {
         "username": user,
         "password": pass
    } 
}
这样做的目的是将有效负载设置为“password”对象,这样在第一次调用之后,它不再是一个函数,而是一个对象

改为这样做:

function payload(user, pass) {
    return { 
             "thePassword": {
                "username": user,
                "password": pass
           } 
      }
}

callApiToken做什么?callApiToken是调用getUsername()->getPassword()->postAsync()的主函数。所以
callApiToken=require('script.).getUsername