windows 安装 node-canvas

在Windows上部署某些npm包,需要本地编译,有的包环境依赖比较强,比如canvas,基本上在Windows上部署失败都是这个原因,今天带你一次性解决。

安装canvas需要python2.7环境,v3.x.x版本会造成系统报错。

构建node-canvas模块需要:

  1. node-gyp的全局安装。
  2. GTK 2
  3. 对于可选的JPEG支持(node-canvas 2.0和更高版本):libjpeg-turbo

1、Choco命令安装依赖环境

在以管理员权限打开 Power’Shell下,对于安装Windows软件,可使用choco命令安装。安装Node.js时勾选安装 choco ,安装完就可使用了。

PowerShell中输入:

  1. choco install -y python2 gtk-runtime microsoft-build-tools libjpeg-turbo

自动安装python2.7,Vc++环境;如果本机未安装choco,可以手动安装。

微软VC++编译工具链也可以手动安装,下载地址:https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community

选择VC++桌面开发组件安装即可。

没有choco 的话,可以用这个来安装:

  1. npm i -g windows-build-tools

国内环境python下载缓慢,经常中断,直接从官网下载python2.7,我用的是Python2.7.18,官网下载:https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi

安装时,要确保Python命令添加到系统路径里,程序安装默认路径为 C:\Python27 下。终端输入Python 可以看到成功运行命令。

安装过程会出现错误,主要是 libjpeg-turbo,不过不要紧,程序应该已经安装了,C盘目录下应该存在 libjpeg-turbo64 目录了。如果没有可以手动下载安装,下载地址:

https://sourceforge.net/projects/libjpeg-turbo/

选择后缀名为vc的程序。

libjpeg-turbo 可选,用于JPEG支持; node-canvas 2.0及更高版本。
下载适用于Visual C ++的最新libjpeg-turbo SDK(当前libjpeg-turbo-1.5.1-vc.exelibjpeg-turbo-1.5.1-vc64.exe),并安装到其默认位置(C:\libjpeg-turbo如果是32位或C:\libjpeg-turbo6464位)。

2、将GTK解压至C:\GTk目录下

您将需要捆绑在GTK中的cairo库。下载适用于Win32Win64的GTK 2软件包。解压缩到目录C:\GTK。下载地址:https://ftp.acc.umu.se/pub/GNOME/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip

然后把路径 C:\GTK\bin 加入到系统路径里,缺少GTK会提示错误:

  1. Warning: Missing input files:
  2. C:\GTK\bin\libcairo-2.dll
  3. C:\GTK\bin\zlib1.dll
  4. C:\GTK\bin\libfreetype-6.dll
  5. C:\GTK\bin\libpangocairo-1.0-0.dll
  6. C:\GTK\bin\libfontconfig-1.dll
  7. C:\GTK\bin\libexpat-1.dll
  8. C:\GTK\bin\libpangowin32-1.0-0.dll
  9. C:\GTK\bin\libintl-8.dll
  10. C:\GTK\bin\libglib-2.0-0.dll
  11. C:\GTK\bin\libgmodule-2.0-0.dll
  12. C:\GTK\bin\libpangoft2-1.0-0.dll
  13. C:\GTK\bin\libgobject-2.0-0.dll
  14. C:\GTK\bin\libpango-1.0-0.dll
  15. C:\GTK\bin\libpng14-14.dll
  16. C:\GTK\bin\libgthread-2.0-0.dll
  17. gyp info ok

注意:

  • GTK和Node.js都需要64位或32位编译成功。
  • 下载GTK 2,*而不是GTK 3*,它缺少所需的libpng。如果你得到链接器错误,你很可能选择了错误的包。
  • 如果您使用的位置不是C:\GTK,请将GTK_Root参数添加到npm installnode-gyp rebuild。例如:node-gyp rebuild --GTK_Root=C:\somewhere\GTK

3、安装canvas

以上环境配置好后,重新启动 PowerShell ,执行命令:

  1. npm i -g canvas

此时,如果环境正确,编译会通过。如果出现错误,配置一下环境:

  1. npm config set msvs_version 2019
  1. npm config set python C:\\Python27

*注意:*我在使用最新版本 Node.js 16.14.2 始终没有编译成功,出现这个错误:

后来我下载了 Node.js 14.19.1 终于编译成功。下载地址:https://npmmirror.com/mirrors/node/v14.19.1/node-v14.19.1-x64.msi

添加程序执行路径到系统环境后,必须要重新打开 PowerShell ,否则当前环境不生效。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容