2017-04-25 206 views
0

我們有一個應用程序構建在nodejs(服務器A)上,該應用程序使用REST API從另一個nodejs應用程序(服務器B)獲取數據。節點服務器錯誤buffer.js:488拋出錯誤('toString失敗');

同樣,對於下載文件服務器上的服務器B和服務器B的美容要求取回從AWS S3文件和管道把數據傳回服務器A

該系統完美的作品,我們可以下載文件高達1GB。

問題是有時服務器A下面的錯誤崩潰:

buffer.js:488 
    throw new Error('toString failed'); 
    ^

Error: toString failed 
    at Buffer.toString (buffer.js:488:11) 
    at Request.<anonymous> (/var/www/sky/portal/node_modules/request/request.js:1145:39) 
    at emitOne (events.js:95:20) 
    at Request.emit (events.js:182:7) 
    at IncomingMessage.<anonymous> (/var/www/sky/portal/node_modules/request/request.js:1091:12) 
    at IncomingMessage.g (events.js:273:16) 
    at emitNone (events.js:85:20) 
    at IncomingMessage.emit (events.js:179:7) 
    at endReadableNT (_stream_readable.js:913:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

服務器A是使用下面的代碼調用服務器B:

exports.downloadAsset = function(req, res, assetUrl, cb) { 
    res.cookie('fileDownload', 'true'); 
    request(
    config.api.baseUrl + assetUrl 
    , 
    function(error, response, body) { 

    } 
).pipe(res); 
} 

我們不是從那裏的應用是越來越墜毀肯定。 請建議。

+0

您是否有調用服務器A上的請求模塊的代碼? –

+0

@PeterGrainger,增加了請求模塊。 –

+0

你有沒有解決這個@A_J? – Jeremy

回答

0

解決方案我用來排序上述問題: 我不得不修改我們的流量。我們將數據從服務器B傳輸到服務器A,但現在服務器B正在向服務器A發送簽名的URL,並且使用該簽名的URL直接從S3下載文件。

相關問題