2017-04-24 5 views
0

この例にはいくつかの文脈が欠けています。Node.jsのhttp投稿リクエストを修正したり、エラーを処理してより効率的にデバッグする方法はありますか?

TypeError: Invalid data, chunk must be a string or buffer, not object 

私はそれが原因であると考えdataフィールドに基づいて、されているが、私は確認することはできません何の:しかし、この要求は、このエラーを返します。このAPIはJSONを返すので、私はその問題を解決することはできません。私が最も関心を持っているのは、Nodeでのエラー処理が優れていることです。エラーの原因を正確に知っていれば、これをもっと早く修正できます。どんな助けもありがとう!

Program.prototype.produceSomething = function(){ 
     const headers = { 
     'Authorization': 'API_KEY', 
     'Content-Type': 'application/json', 
     } 
     const options = { 
      url: 'SOME_API', 
      path: 'SOME_PATH', 
      method: 'POST', 
      data: 'dataString', 
      headers: headers, 
     }; 
     let body = ""; 
     return new Promise(function(resolve, reject){ 
     let request = https.request(options, 
      function(response){ 
      response.on('data', function(data){ 
       body += data; 
      }) 
      response.on('end', function(){ 
       body = JSON.stringify(body) 
       resolve(body); 
      }) 
      }) 
      request.on('error', function(err){ 
      reject(err) 
      }) 
     }) 
    } 
+0

正確にエラーが発生しますか? '要求 'がそれを投げているのか、あなたが投稿しようとしているエンドポイントですか? – Bergi

+0

私はそれが要求であると確信しています、はい。そのコードブロックを削除すると、未処理の約束エラーがスローされます。 – colbisaurusrex

答えて

0
body += data 

データが文字列やバッファであることを確認してください。必要に応じてキャストすることができます。デバッグのために

あなたが約束をたくさん使用している場合、あなたはoptions.dataので便利なもの

0

をログに記録するDecoratorパターンを使用することができます文字列がtext/htmlにヘッダにContent-Typeを設定してみてくださいです。

content-typeをapplication/jsonにする場合は、options.dataをjsonオブジェクトに設定してみてください。

関連する問題