【问题标题】:Sharp nodejs, axios input receiving undefinedSharp nodejs,axios输入接收未定义
【发布时间】:2021-08-24 21:00:01
【问题描述】:

嘿伙计们,基本上我是在使用 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;

出于某种原因,尖锐说我没有将 ArrayBuffer 作为输入。但是 axios 的响应似乎是 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;

【问题讨论】:

  • 请使用答案(下面)而不是把答案放在问题中:)

标签: node.js axios sharp


【解决方案1】:

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;

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2017-09-27
    • 2022-12-10
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多