2011-10-18 107 views
0

我使用knox亞馬遜上傳器作爲「代理」從Javascript上傳切片文件。 但這事that've注意到的是,有時(可悲的是有時所以我不能準確識別錯誤)時response.statusCode不是200的崩潰的NodeJS在一個例外:Nodejs亞馬遜上傳使用Knox崩潰在斷言錯誤

assert.js:93 throw new assert.AssertionError({

AssertionError: true == false at IncomingMessage.
(http.js:1341:9) at IncomingMessage.emit (events.js:61:17) at
HTTPParser.onMessageComplete (http.js:133:23) at Socket.ondata
(http.js:1231:22) at Socket._onReadable (net.js:683:27) at
IOWatcher.onReadable [as callback] (net.js:177:10)

有誰知道爲什麼發生這種情況?有沒有辦法來捕捉該異常,避免服務器崩潰?

下面是一些代碼,如果有幫助:

var request = client.request('PUT', '/' + params.fileName + '?partNumber=' +  params.partNumber + '&uploadId=' + params.uploadId, { 
    'Content-Length': req.headers['content-length'] 
}); 

req.on('data', function(data){ 
    request.write(data, 'binary'); 
}); 
request.on('response', function(response) { 
    if (response.statusCode== 200) { 
     console.log('Part '+ params.partNumber + ' inserted with etag: '+ response.headers.etag); 
} 
}).end(); 
+0

實際的錯誤它給了我這樣的響應之前: {代碼:「將requestTimeout」, 消息:「你的套接字連接到服務器是無法讀取或在超時時間內寫入。空閒連接將被關閉「, 的requestId: '97007DD8BAD530BB', 主機ID: 'Bl9b9ggKKdnF0bBief0i + 1cNAT9eIQhObe2nMFYUqOktN3HlZ9lzs1izwAQxg50Y'} –

回答

0

這看起來是在node.js的一個bug < V0.5其中Socket.destroySoon()不關閉套接字的時候了。

https://github.com/joyent/node/issues/1892

+0

剛剛看到您的回覆,遺憾的是有點晚= P。將nodeJS升級到當前的穩定版本0.6.7似乎解決了這個問題。謝謝! –