安装环境:Mac OSX Mavericks
要使用Node.js的canvas库,直接通过npm命令安装,通常,会得到一个编译错误:
$ npm install canvas
...
> node-gyp rebuild
...
No package 'cairo' found
...
npm ERR! not ok code 0
原因是依赖包cairo没有找到。
而cairo可以通过homebrew安装,但是,安装时又会有一个依赖错误:
$ brew install cairo
cairo: Unsatisfied dependency: XQuartz
Homebrew does not package XQuartz. Installers may be found at:
https://xquartz.macosforge.org
Error: An unsatisfied requirement failed this build.
根据错误提示,原因是没有安装XQuartz。由于Apple从OSX 10.5开始移除了X11的支持,为了继续运行X11程序,Apple搞了一个开源项目XQuartz来继续提供X11的支持。从官方网站https://xquartz.macosforge.org下载,安装即可。
装完XQuartz,再次运行:
$ brew install cairo
顺利安装成功!
再次尝试安装canvas,可能又会遇到以下错误:
$ npm install canvas
...
Package xcb-shm was not found in the pkg-config search path.
Perhaps you should add the directory containing `xcb-shm.pc'
to the PKG_CONFIG_PATH environment variable
Package 'xcb-shm', required by 'cairo', not found
...
原因是环境变量PKG_CONFIG_PATH
没有正确设置。把它设置成如下:
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig
再次安装npm install canvas
,成功!在Node.js中测试,成功:
$ node
> var Canvas = require('canvas');
undefined
由于Canvas依赖较多,故记录以便以后查阅。