gpt4 book ai didi

node.js - 如何避免 super 代理: double callback bug

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:00 41 4
gpt4 key购买 nike

我使用 supertest 发出简单的获取请求。响应可能是图像。

Supertest - v3.0.0
SuperAgent - v3.8.2
Node - carbon (8.9.4)

完成所有这些升级后,我遇到了以下问题

代码:

const request = require('supertest');

it('mocha test', async () => {
const res = await request('${serviceUrl}').get('/api/image.png')
});

在此请求之后,我收到警告superagent:双重回调错误和错误:

Error: Parse Error
at Socket.socketOnData (_http_client.js:440:20)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at TCP.onread (net.js:594:20)

我已经阅读了很多有关将 superagent 更新到最新版本的解决方案的问题。对我不起作用。

最佳答案

您正在获取图像,您需要一个解析器来获取图像。你可以尝试这样的事情。

function binaryParser(res, callback) {
res.setEncoding('binary');
res.data = '';
res.on('data', function (chunk) {
res.data += chunk;
});
res.on('end', function () {
callback(null, new Buffer(res.data, 'binary'));
});
}

// example mocha test
it('mocha test', function (done) => {
request(app)
.get('/api/image.png')
.expect(200)
.expect('Content-Type', 'image.png')
.buffer()
.parse(binaryParser)
.end(function(err, res) {
if (err) return done(err);

// binary response data is in res.body as a buffer
assert.ok(Buffer.isBuffer(res.body));
console.log("res=", res.body);

done();
});
});

关于node.js - 如何避免 super 代理: double callback bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49051724/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com