Я пытаюсь установить пакет Sharp для сжатия буферов для изображений. Теперь, когда я устанавливаю пакет через npm install sharp --save
и пытаюсь использовать эту строку кода:
const sharp = require('sharp');
, я получаю следующую ошибку: https://textuploader.com/1gvep. Это упомянутый журнал: https://textuploader.com/1gvez. Я провел небольшое исследование, прежде чем опубликовать это. Вот что я пробовал:
- использовать --ignore-scripts = false flag
- использовать флаг --unsafe-perm
- удалить пакет Sharp из node_modules и снова запустите
npm install --ignore-scripts=false
- запустите
npm rebuild
Но пока ничего из этого не помогло. Некоторые люди, казалось, решили проблему, вернувшись к Node 10, но это не вариант для меня, потому что мне нужно использовать его вместе с Discord. js, который требует как минимум Node 12. Идея, которую я имел в виду записывает изображение в папку tmp, сжимает записанное изображение с помощью другой библиотеки и перезагружает его, но, на мой взгляд, это не очень элегантно. Теперь мои вопросы:
- Что еще я могу попробовать, чтобы правильно установить Sharp?
- Есть ли альтернативы уменьшению размеров буфера изображений?
Edit : Как подсказал Алекс, я попробовал Jimp и для начала просто уменьшил размер изображения. Я поделюсь своим кодом здесь на случай, если кто-то поищет альтернативу.
let buffer = canvas.toBuffer('image/png'); //from node-canvas
Jimp.read(buffer)
.then(image => {
image.resize(width>>1, height>>1).getBufferAsync(Jimp.MIME_PNG)
.then(comprBuffer => {
/* use the new buffer */
});
})
.catch(err => {
console.log(err)
});