第二次运行Node.js'对象不是一个函数'的有效载荷()

这个代码是用户input用户名/密码的地方,他们得到一个令牌。 我有它,如果他们input错误的信息,并得到一个401,他们再次得到提示再次尝试与.catch(function(err) { callApiToken(); }) 。 但是,第二遍我会得到Unhandled rejection TypeError: object is not a function payload(user, pass)函数的函数。 为什么是这样?

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

你的问题是有效载荷function本身,特别是这个部分:

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

那是什么,它是否将有效载荷设置为“thePassword”对象,以便在第一次调用之后,不再是函数而是对象。

做这个,而不是:

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