Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个回调函数不执行?_Javascript_Node.js_Express - Fatal编程技术网

Javascript 为什么这个回调函数不执行?

Javascript 为什么这个回调函数不执行?,javascript,node.js,express,Javascript,Node.js,Express,我一直有这个问题。它似乎工作了一段时间,然后没有太多的押韵或理由来打破它 router.get('/home/', function(req, res, next) { var code = req.query.code; console.log("acquired code from SC"); req.SC.authorize(code, function(err, accessToken) { if ( err ) { throw err; }

我一直有这个问题。它似乎工作了一段时间,然后没有太多的押韵或理由来打破它

router.get('/home/', function(req, res, next) {

  var code = req.query.code;
  console.log("acquired code from SC");

  req.SC.authorize(code, function(err, accessToken) {
    if ( err ) {
      throw err;
    } else {
      console.log("traded code for access token");
      req.session.oauth_token = accessToken;
      // Client is now authorized and able to make API calls
      //res.render('home', { token: accessToken });
      soundcloud.getLoggedInUser(accessToken, function(user){
        console.log("done getting user from SC");
      });
    }
  });

});
下面是getLoggedInUser函数

//get data for the user who is logged in
function getLoggedInUser(accessToken, done){
    var href = 'https://api.soundcloud.com/me?oauth_token=' + accessToken;
    getRequest(href, done);
}

//used for get requests to soundcloud API
function getRequest(href, done){
    console.log(href);
    requestify.get(href).then(function(response){
        console.log(done);
        done(response.getBody());
    });
}
这是输出

acquired code from SC
traded code for access token
https://api.soundcloud.com/me?oauth_token=
[Function]

我猜这是我的node/express设置的问题,而不是代码本身的问题。有什么想法吗?

什么是
requestify()
?另外,
if(err){throw err;}
对异步回调没有任何用处。您不能从异步回调中抛出,并期望任何代码都能看到该异常。它将被async infrastructure.FYI(您的URL
https://api.soundcloud.com/me?oauth_token=1-232387-12073749-d161b3987127c3
返回一个JSON响应,使该部分看起来正常工作。我建议您在
getRequest()
的内部执行
console.log(response)
以查看您得到了什么。执行
console.log(done)
是生成
[函数]
输出的操作。如果它在一段时间后停止工作,则可能会达到某些API限制(请求可能太多)。您必须准确地记录请求返回的错误,以查看这是否为您提供了它停止工作的线索。
requestify()
上没有错误处理程序,因此错误是无声的。任何时候,当某些东西停止工作时,请确保记录所有错误路径,以便收集有关出错原因的信息。@jfriend00它是节点的http请求库。有没有更好的建议?我看不到这个错误处理程序的任何选项。