2015-04-20 51 views
3

我在我的node.js(express)應用程序中使用請求模塊。有時會發生這樣的StatusCode相關的錯誤:http statusCode有時未定義

TypeError: Cannot read property 
'statusCode' of undefined at Request._callback 

這是我的全部代碼:

request("https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + docs[0].title + "&type=video&key=(some-key-variable)", { 
       json: true 
       }, function(error, response, resultData) { 
       var yArr = []; 
       if (!error || response.statusCode == 200) { 
        for (var i = 0; i < config.youtubeVideoCount; i++) { 
        var vArr = resultData.items[i]; 
        yArr.push(vArr); 
        } 
       } else { 
        console.log("can't find video"); 
       } 
       }); 

response.statusCode給出了一個錯誤的時候。我如何控制請求成功?請求模塊中有bug嗎?爲什麼有時候statusCode未定義?我認爲statusCode應該每次都可用。

答案 可能是響應超時問題,你應該做一個if語句像這樣;

if (response === undefined || response.statusCode != 200){ console.log("there is a prob"); } 

這段代碼首先控制響應變量,然後response.statuscode,所以如果響應不確定不控制response.statusCode因此,我們不能得到任何錯誤。

+1

如果錯誤是truthy然後'response'我是不確定的,但它仍然會檢查'response.statusCode' –

+0

當statusCode是未定義的,readyState的值是什麼?我看到瀏覽器環境(錯誤地)在readyState爲2或更大之前不會設置狀態值。 – dgvid

+0

沒有readyState屬性進入響應,控制檯日誌未定義everyime –

回答

6

這是一種解決方法,因爲可能有幾個原因responseundefined

if (!error && response.statusCode == 200) { 
    // do your stuff here.. 
} 
+0

是的,它可以是有用的控制 –

+0

什麼原因可以是? –

+0

@OsmanErdi,可能會有很多例如超時問題,實現中的錯誤和其他問題。在任何情況下,你應該使用一個解決方法來清除 –