Острые узлы, прием ввода axios не определен

#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;