#node.js #axios #sharp
Вопрос:
Эй, ребята, так что в основном я делаю http-запрос, используя axios, чтобы получить изображение в качестве «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;
Комментарии:
1. Пожалуйста, используйте ответы (ниже) для ответов, а не вставляйте ответы в вопросы 🙂
Ответ №1:
ОБНОВЛЕНИЕ/ОТВЕТ Так что в основном мне просто нужно было добавить одну строку, преобразовать мой 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;