You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sharp.js+Node.js云函数返回text/html而非图片的修复咨询

修复Firebase Cloud Function返回图片而非text/html的问题

问题根源

  1. 未设置正确的响应Content-Type头:Firebase Cloud Function默认会将响应类型设为text/html,导致浏览器无法识别返回的二进制缓冲为图片。
  2. 异步函数调用遗漏await:getSharp是异步函数,直接赋值会得到Promise对象而非Sharp实例,后续图片处理逻辑会出错。

修复后的代码

async function getSharp(){
  const res = await axiosInstance.request({ url: imageUrl, responseType: 'stream' });
  return res.data.pipe(sharp()) as Sharp;
}

// 调用异步函数必须添加await,确保拿到Sharp实例
const sharp = await getSharp();
const buffer = await sharp
      .resize({ width: imageWidth })
      .jpeg({
        quality: 80,
      })
      .toBuffer();

// 设置响应头明确返回类型,再发送图片缓冲
response.setHeader('Content-Type', 'image/jpeg');
response.status(200).send(buffer);

关键修复点

  • 给getSharp()调用添加await:避免拿到Promise对象,确保后续图片处理逻辑正常执行
  • 添加Content-Type响应头:明确告知客户端返回的是JPEG格式图片
  • 改用response.send(buffer):Firebase响应对象的send方法能更稳妥地处理二进制数据传输,替代手动write+end的写法

内容的提问来源于stack exchange,提问作者yuksi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:22:04