在给手头上一个之前在 Ubuntu 下Programming的 project 执行 npm i 时候发现竟然失败了,一看之下是 node-canvas 编译错误,提示找不到 libjpeg.h。奇怪的是明明已经按照 node-canvas 的文档,装好相关依赖的库了。libjpeg.h 也是存在于 /usr/local/include 里面的!

百思不得其姐,一番 google 之后,发现在 node-canvas 的 github 上有两个 issue 说到这个问题。最后多数人表示在 terminal 里面执行下面这条命令后可以解决问题:

1
xcode-select --install

好吧,mac os 新手没办法,虽然不知道是什么神奇的原理,也只好照猫画虎!执行之后跳出一个安装对话框,按 Install ,几分钟之后就提示成功了。再回到 terminal 执行 npm i……哇,竟然还是失败了!

有点没招了,继续 google 。终于是发现这个命令是用来 Command Line Tools,貌似是新 os x 默认没有设定编译相关的环境变量,通过安装这个包可以将相关环境设定好。难道是刚才敲命令的姿势没摆好?再试一次,结果还是一样,不过让我感觉奇怪的是安装过程又执行了一次,没有替换或已安装的提示,看那对话框不太对啊,怎么叫我去 Get XCODE ,我这不是已经装了最新的 7.2 了吗?还怎么 Get !

无奈之后按一篇文章中提到的传统方式,打开 XCODE 在 主菜单点 Open Developer Tool -> More Developer Tools ,打开 Apple 官网网页。看到那个 Command Line Tools OS X for XCode 7.2 ,我去,这一个包四百多兆,怎么可能几分钟就下载安装好。看来是命令行安装的方法根本行不通了。

实践证明,这个包要手动下载,安装完成之后;npm i 就可以完成编译了。