代码如下: var agentReq = http.request(options, function (agentRes) {
var chunks = [];
if (agentRes.statusCode !== 200) {
failcb('[util] Failed to request url:' + url);
return;
}
var dataSize = 0;
//agentRes.setEncoding('binary'); // <--- 加上这行就会crash
agentRes.on('data', function (chunk) {
chunks.push(chunk);
dataSize += chunk.length;
});
agentRes.on('end', function () {
var fullData = Buffer.concat(chunks, dataSize);
fullData = aesDec(fullData);
fullData = jsonDec(fullData);
successcb(fullData);
});
});
agentReq.on('error', function (e) {
failcb(e.message);
});
if (dataObj) {
var sendData = jsonEnc(dataObj);
sendData = aesEnc(sendData);
agentReq.write(sendData);
}
agentReq.end();
此function在第2次call的时候抛出异常。
报错信息为buf.copy
^
,TypeError: Object (此处省略一大堆乱码)
但只要将标注的那行注释掉就正常了。问题原因不明。
在使用Node.js的Buffer.concat方法时遇到一个奇怪的问题,函数在第二次调用时抛出TypeError异常,具体报错信息涉及到buf.copy。异常内容包含乱码。将涉及该错误的代码行注释掉后,程序运行恢复正常,但问题的根本原因尚未明确。
1513

被折叠的 条评论
为什么被折叠?



