Sharp nodejs,axios 输入接收未定义

Sharp nodejs, axios input receiving undefined

大家好,我基本上是在使用 axios 发出一个 http 请求,以获取图像作为“arraybuffer”。收到图像后,我将其传递给 sharp,但出现此错误。

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined

这是我的代码

let res = await axios({ url, responseType: "arraybuffer" })
    
    const data = await sharp(res.data).resize({ width: 100, height: 100 }).toBuffer()
   
    const fileName = Md5.hashStr(entityId)
    requirements.Md5 = fileName
    requirements.fileName = fileName + fileExtension
    requirements.fileData = res.data
    return requirements;

出于某种原因,sharp 说我没有将 ArrayBuffer 作为输入。但是 axios 响应似乎是类型 ArrayBuffer.

有什么想法吗?谢谢

UPDATE/ANSWER 所以基本上我只需要添加一行

let res = await axios({ url, responseType: "arraybuffer" })
const buffer = Buffer.from(requirements.fileData, 'binary'); <---

const data = await sharp(res.data).resize({ width: 100, height: 100 }).toBuffer()

const fileName = Md5.hashStr(entityId)
requirements.Md5 = fileName
requirements.fileName = fileName + fileExtension
requirements.fileData = res.data
return requirements;

UPDATE/ANSWER 所以基本上我只需要添加一行, 将我的 arraybuffer 转换为二进制文件就成功了

let res = await axios({ url, responseType: "arraybuffer" })
const buffer = Buffer.from(requirements.fileData, 'binary'); <---

const data = await sharp(res.data).resize({ width: 100, height: 100 }).toBuffer()

const fileName = Md5.hashStr(entityId)
requirements.Md5 = fileName
requirements.fileName = fileName + fileExtension
requirements.fileData = res.data
return requirements;