错误:回调不是函数(nodejs)

时间:2016-07-27 08:40:39

标签: javascript node.js asynchronous callback

当我执行我的代码时,我不断收到错误'TypeError:回调不是函数' 这是相关的代码:

exports.isVideo = function(tweetId, callback) {
  client.get('statuses/show/' + tweetId, function(err, tweet, res){
    if(tweet.extended_entities){
        if(tweet.extended_entities.media[0].type === 'video'){
            console.log('true');
            callback(true);
        } else {
            console.log('false');
            callback(false);
        }
    } else {
        console.log('false');
        callback(false);
    }
  });
}

这是一个不同的文件(我需要在这个文件的顶部的第一个文件,这不是错误的原因):

ids.forEach(function(id){
    console.log(id.twitterId);
    twitterConverter.isVideo(id.twitterId, function(boolean){
        if(boolean){
            console.log('do something');
        } else {
            console.log('do nothing');
        }
    });
});

首先,请不要将此标记为重复,因为还有其他帖子具有相似的标题。我查看了它们,原因通常是没有传递回调函数,或者传递了太多参数,这不是这里的情况。

我不熟悉nodejs,所以也许我忽略了一些明显的东西,但我找不到这段代码的错误。

client.get()来自this npm包。也许错误与此有关?

如果你能帮助我,我会很高兴。

1 个答案:

答案 0 :(得分:1)

回调的调用者(在这种情况下是TableModel方法)决定传递给回调的参数。您需要声明您的回调以匹配client.get表示它将传递给回调的内容。您可以根据需要为参数命名(您使用的名称无关紧要),但它们将按client.get决定的顺序获取值。

在这种情况下,client.get使用您在代码中的三个参数调用回调,如client.get中所示。所以您的function(err, tweet, res)必须是这样的:

callback

代码是:

    callback(null,null,true);