Así que hice una aplicación de Galería de memes. Aquí está el enlace: https://meme-gallery-web-app.netlify.app/
Puedes subir una imagen a través de un enlace. En primer lugar, estaba tratando de verificar si la URL enviada tenía la extensión jpg/png, para poder trabajar con ella (ya sea para cargarla o no). Es por eso que traté de implementar el paquete de tipo Imagen . Pero me da el error mencionado. Aquí está el código donde implementé.
const https = require("https"); const imageType = require("image-type"); const imageModel = require("../models/models.js"); var date = new Date(); var currentDate = date.toLocaleDateString(); const submitLink = async (req, res) => { const { url } = req.body; https.get(url, (response) => { response.on("readable", () => { const chunk = response.read(imageType.minimumBytes); response.destroy(); console.log(imageType(chunk)); }); }); };Después de enviar el enlace, recibí el siguiente error:
TypeError: Expected the input argument to be of type Uint8Array or Buffer or ArrayBuffer, got objectAsí que verifiqué y descubrí que el fragmento variable es un objeto en lugar de un Uint8Array o Buffer. ¿Porqué es eso? ¿Y cómo solucionarlo?
Creo que debería leer los fragmentos, concatenarlos y pasar el búfer resultante a la biblioteca imageType :
https.get(url, response => { const chunks = []; response.on("data", (chunk) => { chunks.push(chunk); }) response.on("end", () => { const resultBuffer = Buffer.concat(chunks); console.log("image type is", imageType(resultBuffer )); }) });