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;
大家好,我基本上是在使用 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;