Node.js: Sharp 包无法安装
Node.js: Sharp package unable to install
我正在尝试安装 Sharp 软件包来压缩图像缓冲区。现在,当我通过 npm install sharp --save
安装软件包并尝试使用这行代码时:
const sharp = require('sharp');
我收到以下错误:https://textuploader.com/1gvep。
这是提到的日志: https://textuploader.com/1gvez 。
在发布之前我做了一些研究。这是我试过的:
- 使用 --ignore-scripts=false 标志
- 使用 --unsafe-perm 标志
- 再次从 node_modules 和 运行 中删除 sharp 包
npm install --ignore-scripts=false
- 运行
npm rebuild
但到目前为止,这些都无济于事。现在有些人似乎通过降级到 Node 10 来解决问题,但这对我来说不是一个选择,因为我需要将它与 Discord.js 一起使用,这至少需要 Node 12。我想到的想法正在将图像写入 tmp 文件夹,用另一个库压缩写入的图像并重新加载它,但我认为这不是很优雅。现在我的问题是:
- 我还可以尝试如何正确安装 Sharp?
- 是否有缩小图像缓冲区大小的替代方法?
编辑:
正如 Alex 所建议的,我试用了 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)
});
我尝试安装 sharp,在以下版本上没有问题:
节点 v12.16.1
Npm v6.13.4
改用 Jimp 怎么样?
我正在尝试安装 Sharp 软件包来压缩图像缓冲区。现在,当我通过 npm install sharp --save
安装软件包并尝试使用这行代码时:
const sharp = require('sharp');
我收到以下错误:https://textuploader.com/1gvep。 这是提到的日志: https://textuploader.com/1gvez 。 在发布之前我做了一些研究。这是我试过的:
- 使用 --ignore-scripts=false 标志
- 使用 --unsafe-perm 标志
- 再次从 node_modules 和 运行 中删除 sharp 包
npm install --ignore-scripts=false
- 运行
npm rebuild
但到目前为止,这些都无济于事。现在有些人似乎通过降级到 Node 10 来解决问题,但这对我来说不是一个选择,因为我需要将它与 Discord.js 一起使用,这至少需要 Node 12。我想到的想法正在将图像写入 tmp 文件夹,用另一个库压缩写入的图像并重新加载它,但我认为这不是很优雅。现在我的问题是:
- 我还可以尝试如何正确安装 Sharp?
- 是否有缩小图像缓冲区大小的替代方法?
编辑: 正如 Alex 所建议的,我试用了 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)
});
我尝试安装 sharp,在以下版本上没有问题:
节点 v12.16.1 Npm v6.13.4
改用 Jimp 怎么样?