2016-07-27 26 views
0

私のコードを実行すると、エラー 'TypeError:コールバックは関数ではありません。
これは、関連するコードです:エラー:コールバックが関数ではありません(nodejs)

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

:これは、別のファイル(私はそれがエラーの原因ではありません、この1の上部にある最初のファイルが必要)である

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

まず第一に、同じタイトルの他の投稿があるので、これを重複としてマークしないでください。私はそれらを調べましたが、その理由は通常、コールバック関数が渡されなかったか、あまりにも多くのパラメータが渡されたことでした。これはここでは当てはまりません。

私はnodejsでまだ経験していないので、明らかに何かを見落としているかもしれませんが、このコードで何が問題なのかわかりません。

client.get()は、thisnpmパッケージからです。たぶんエラーには何か関係がありますか?

ここで私を助けることができたらとても嬉しいです。

+0

'typeof callback'を記録しようとしていますか?あなたにヒントを与えるかもしれません。あなたのコードは私にはうまく見えます。コールバックなしで他の場所でその関数を呼び出していないと確信していますか? – otajor

+0

タイプコールバックは未定義を返します。私は本当に機能を返さない理由は分かりません。 – eRodY

+0

すでにclient.get()のコールバックで 'err'を処理しましたか? 多少のエラーがあり、あなたの 'コールバック'が実行されず、コールバック関数として扱われないことがありますか? – Carr

答えて

1

コールバックの呼び出し元(この場合はclient.getメソッド)は、どの引数がコールバックに渡されるかを決定します。 client.getがコールバックに渡すと言う内容に一致するようにコールバックを宣言する必要があります。引数には任意の名前を付けることができます(使用する名前は関係ありません)が、client.getの順番で値が取得されます。あなたはこのようなものにするためにあなたのcallback必要.soのfunction(err, tweet, res)のようにあなたのコードを持っている三つの引数を持つコールバックを呼び出しclient.getこの場合

、:

callback(null,null,true); 

コードは次のとおりです。

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(null,null,true); 

    } else { 
     console.log('false'); 
     callback(null,null,false); 

    } 
    } else { 
    console.log('false'); 
    callback(null,null,false); 

    } 
    }); 
    } 
関連する問題