使用sharp实现后端生成缩略图功能报错:(0 , sharp_1.default) is not a function
近期有个需求,需要前端上传一张原图,后端生成一张缩略图并且把两张图都保存,一开始选用的工具是GraphicsMagick,花了一天半的时间好不容易在本地调通了,结果到服务器上发现docker部署的情况下使用这个工具需要每次部署的时候把所有环境重新加载一遍,速度太慢了,无奈之下只好找别的工具来实现这个功能。
resize-img
看了下resize-img,下载量实在有点少,不敢用在生产环境上怕出问题
easyimage
看了下 easyimage
下载量还可以,但是基于ImageMagick,算了,怕了怕了
node-canvas
看了下 node-canvas,下载量挺高的
但使用起来需要新建画布,新建图层还得计算图片大小什么的,让我想起了当年被javafx支配的日子,使用起来实在是太麻烦了,尝试了一会之后还是放弃了。
sharp
最后找到了sharp
下载量又高,使用起来又方便
还支持多种异步方式,比起GraphicsMagick来说不用安装环境也不用使用麻烦的回调函数,简直是最佳选择。
照着文档加上去之后,问题来了,这个一调就报错:(0 , sharp_1.default) is not a function
我想可能是ts的原因,仔细检查发现只有引入方式不一样,
import sharp from 'sharp';
抱着试一试的心态改成了文档里的const sharp = require('sharp');
结果就好了,不知道原因,反正就好了。
转载自:https://juejin.cn/post/7137961178084409381