我有一个带图像网址的函数,调整图像缓冲区的大小并返回它的base64图像格式。令人沮丧的是我有这个工作,看不到会影响这个功能的任何代码更改,但有些事情不太正确。当我记录base64时,我看到什么看起来像是base64编码,但它比以前对同一图像要小很多,并且它以%
结束,而不是预期的,以前见过{ {1}}。这是我的相当直接的功能:
=
再次,这之前工作正常,令人担忧的是,我没有得到错误。返回响应的代码仍会记录下来:
const bufferRequest = request.defaults({ encoding: null });
const sharp = require('sharp');
function returnBase64(imgUrl, params) {
return new Promise((resolve, reject) => {
bufferRequest.get(imgUrl, params, function (err, res, body) {
let resized = sharp(body).resize(params.width, params.height);
resized.toFormat('jpeg')
.toBuffer()
.then((resultBuffer) => {
let formattedImage = "data:" + res.headers["content-type"] + ";base64," + new Buffer(resultBuffer).toString('base64');
console.log(formattedImage);
resolve(formattedImage);
})
.catch((error) => {
reject(error);
})
});
})
}
如您所见,缺少base64 {
"statusCode": 200,
"headers": {
"Content-Type": "image/jpeg"
},
"body": "data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAGQAZADASIAAhEBAxEB/8QAHAAAAgMBAQEBAAAAAAAAAAAABAUDBgcCAQgA/8QARBAAAgECBAQDBQYFAwIFBQEBAQIDBBEABRIhBjFBURMiYTJxgZGhBxQjscHwFUJS0eEzYvEkgggWcpKiNENjstIl4v/EABoBAAIDAQEAAAAAAAAAAAAAAAIDAQQFAAb/xAAxEQABBAEDAgQEBgMBAQAAAAABAAIDESEEEjFBUQUTImEycaHwFIGRscHRI0Lh8VL/2gAMAwEAAhEDEQA/AA1oY0neJrkAXUAd79fTE1NGQ6qIlKyLyC877EfA/nhskQlEMjKhOkA6huPW3obfXEbopCuGUMR0HOxtcfnjyPmE8r2y5am8ZgtQ8YhBBCP5jvbmL98TUpeOjaE6mVCV0t5ltfy2v8vjiNX1NcLcabAkHfuMSUjGar8F4wwlFpCoOx6A+psDgbNVagt7riuhSoEiurMyi635EncG5/e2KnQR+BFLBspWo5g7kEc/dt0xf2iLxhbLrOwB6kXIB/fI4qWcQmHMonQ+WUDWDsNjff68sN077tiG+qcUSGWCzW8RUtcel+ffa/yxw41wvFNKAANkTrfYi/vH1x7QyjQoZvNYXVdrn1/ffHTmQt5CsYv/ADdO/wCmFZukVKWnsUR410qVs2rmLHvgBzoYEWaxAKnlYf8AOCo4wxlivJKVu4LCy%
,并且关闭了json标记。以前身体要大得多。这是iTerm的事情还是我做了些傻事?这个=
是什么意思,它是一个特殊的角色还是外卡?我确实被封锁了。
更新
我注意到上述问题仅在我使用%
库测试时使用命令lambda-local
进行测试。 lambda-local -f ~/Desktop/project/handler.js -e ~/Desktop/lambdaTesting/testEvent.json
如上所示。
但是当我通过运行console.log(formattedImage)
运行使用mocha的测试套件时,会出现完整的base64,以预期的npm test
结束。这对我来说缩小到两件事中的一件:
1:lambda-local存在一个问题,等待我不知道的完整响应。
2:mocha.done()处理的异步问题没有被lambda-local处理。