2017-04-25 205 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下载文件。

相关问题