node-canvas 是基于 cairo 的一个node端的实现,可以在node端实现和canvas基本一致的使用体验。
npm包名为
canvas
,只需
npm install canvas
即可上手使用。
然而...
面对各种各样的使用环境,经常在开发或部署过程中出现报错,导致使用者痛苦不堪(本人经常遇到各种各样包在本地开发和线上部署时表现不一致的问题)。
今天在使用node-canvas部署的过程中,出现以下报错:
> canvas@2.7.0 install /export/lib/jenkins/workspace/jadfe_material-factory_compile/server/node_modules/canvas
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Pre-built binaries not installable for canvas@2.7.0 and node@10.16.0 (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp WARN Hit error Client network socket disconnected before secure TLS connection was established
Package pixman-1 was not found in the pkg-config search path.
Perhaps you should add the directory containing `pixman-1.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pixman-1' found
在网络上一搜,发现有很多同学出现此类问题,也发现了一些同学or大神给出的解决方案,如:
廖雪峰老师博客中的《npm install canvas简明指南》
JaysonHwang同学的《详细记录一次npm i canvas报错的解决过程》
这些解决方案都非常不错,帮助到了很多同学,不过并没有解决在下遇到的问题。
continue...
众里寻他千百度,那人在灯火阑珊处!
终于在作者的github官方文档中找到了解决方案,而且非常的全面:
对于不同的系统需要使用不同的工具安装对应的依赖包:
Mac Os中 可以使用 Homebrew 执行命令 brew install pkg-config cairo pango libpng jpeg giflib librsvg
Ubuntu中 可以执行命令 sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
CentOs中 可以执行命令 sudo yum install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel
Windows中 可以参考这个文档
具体方案不再一一列举,请参考官方文档
通过这次问题的解决过程,做个小总结,我们遇到问题寻找解决方案的正确打开方式应该是这样:
1.遇到问题应该第一时间查看官网文档
2.官方文档找不到的可以在对应的issue中搜索
3.在网络中遨游
此外,还有非常重要的一点,文档 文档 文档。
既然文档这么重要,那希望在以后开发中,各位能清晰、有条不紊的产出自己的文档。
共勉!