2019独角兽企业重金招聘Python工程师标准>>>

安装步骤:

前提:Node.js安装Canvas之前,需要首先安装node-gyp。
而想要安装node-gyp,需要首先安装windows-build-tools。
执行命令:

npm install --global --production windows-build-tools

执行命令后,会自动安装Visual C++ Build Environment和Python2.7。

然后就可以安装node-gyp了

npm install -g node-gyp

安装后,下载GTK 2以及libjpeg-turbo SDK for Visual C++,请根据系统选择32位或者64位下载。

GTK2:32位 gtk+-bundle_2.24.10-20120208_win32.zip
GTK2:64位 gtk+-bundle_2.22.1-20101229_win64.zip

libjpeg-turbo:32位 libjpeg-turbo-1.5.2-vc.exe
libjpeg-turbo:64位 libjpeg-turbo-1.5.2-vc64.exe

GTK2默认安装C:\GTK,如安装其它目录,需要执行命令

node-gyp rebuild --GTK_Root=C:\somewhere\GTK

libjpeg-turbo默认安装32位C:\libjpeg-turbo或64位C:\libjpeg-turbo64,如安装其它目录,需要执行命令

node-gyp rebuild --jpeg_root=C:\somewhere\libjpeg-turbo

完成后,执行安装Canvas命令即可安装。

npm install canvas

后记

最后一步安装Canvas时,有一个隐藏的坑。如果Windows登录用户名存在中文的话,部分目录会含有中文。导致安装出现错误。

c:\users\王锐\appdata\roaming\npm\node_modules\canvas\src\backend\ImageBackend.h(4): fatal error C1083: 无法打开包括文件: “v8.h”: No such file or directory (编译源文件 ..
\src\backend\ImageBackend.cc) [C:\Users\王锐\AppData\Roaming\npm\node_modules\canvas\build\canvas.vcxproj]
c:\users\王锐\appdata\roaming\npm\node_modules\canvas\src\backend\PdfBackend.h(4): fatal error C1083: 无法打开包括文件: “v8.h”: No such file or directory (编译源文件 ..\s
rc\backend\PdfBackend.cc) [C:\Users\王锐\AppData\Roaming\npm\node_modules\canvas\build\canvas.vcxproj]Backends.cc
c:\users\王锐\appdata\roaming\npm\node_modules\canvas\src\backend\SvgBackend.h(4): fatal error C1083: 无法打开包括文件: “v8.h”: No such file or directory (编译源文件 ..\s
rc\backend\SvgBackend.cc) [C:\Users\王锐\AppData\Roaming\npm\node_modules\canvas\build\canvas.vcxproj]

经过调试,此坑是由于node-gyp在生成编译文件时,XML格式的配置文件会有转码问题,不包含中文的话,转码正常。包含中文后,由于Windows系统是使用GBK,而Python使用UTF-8导致错误。

具体问题出现在easy_xml.py文件内。打开easy_xml.py文件,找到119行左右,如下代码:

  try:xml_string = xml_string.encode(encoding)except Exception:xml_string = unicode(xml_string, 'latin-1').encode(encoding)# Get the old contenttry:f = open(path, 'r')existing = f.read()f.close()except:existing = None# It has changed, write itif existing != xml_string:f = open(path, 'w')f.write(xml_string)f.close()

将代码替换为:

  try:if path.endswith('vcxproj'):xml_string = xml_stringelse:xml_string = xml_string.encode(encoding)except Exception:xml_string = unicode(xml_string, 'latin-1').encode(encoding)# Get the old contenttry:f = open(path, 'r')existing = f.read()f.close()except:existing = None# It has changed, write itif existing != xml_string:if path.endswith('vcxproj'):#use utf_8 encoding to generate vcxproj filef = codecs.open(path, 'w', 'utf_8_sig')#f = open(path, 'w')#convert GBK string to Unicode string to ensure the later utf_8 encodingf.write(xml_string.decode('gbk'))else:f = open(path, 'w')f.write(xml_string)f.close()

主要需要判断生成的.vcxproj项目配置文件时,避免xml_string被初始化编码。并在写文件时,将xml_string从GBK解码,并且打开的文件也设置成utf_8_sig编码类型即可。

关于easy_xml.py可能会存在两个位置,一个是Windows程序数据目录,一个是Node.js的安装目录。

C:\Users\王锐\AppData\Roaming\npm\node_modules\node-gyp\gyp\pylib\gyp\easy_xml.py
C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\easy_xml.py

如果执行node-gyp的命令,会调用第一个路径下的文件,执行npm命令,会调用第二个路径下的文件。

参考内容

1.node-canvas: Installation Windows
2.nodejs安装模块出现MSB4025错误

转载于:https://my.oschina.net/wangr15/blog/1540126

Windows下Node.js安装Canvas插件相关推荐

  1. Windows下Node.js安装及环境配置

    访问https://nodejs.org/en/进入到node.js官网,选择"DOWNLOADS",然后选择压缩包(这里我选择64位)进行下载 第一步:将下载的压缩包解压到D:\ ...

  2. Windows之node.js安装

    Windows之node.js安装 1.下载node.js, 下载地址:https://nodejs.org/zh-cn/download/ 选择windows安装 2.安装,双击软件图标--接受协议 ...

  3. window系统下Node.js安装以及环境变量配置

    目录 Node.js安装 Node.js环境变量配置 国内镜像网站配置 Node.js安装 1.首先在Node官网上下载对应的安装包,我这里下载的是64位window系统的安装文件node-v10.1 ...

  4. Windows下Node.js开发入门(1)

    没事儿捣腾了一下Node.js,跑了个Hello World,特此记录一下. Windows 下安装 Node.js 环境 到Node官网http://nodejs.org就可以下载到安装包,我是Wi ...

  5. Linux下Node.js安装及环境配置

    第一步:通过uname -a 命令查看到Linux系统的版本(备注:x86_64表示64位系统,i686 i386表示32位系统) 第二步:找到对应版本的node.js进行下载 第三步: 在/home ...

  6. windows下node.js的全局模块配置完成后无法全局调用的解决方法

    无效原因: 配置的路径不是以全局模块的宏命令解析工具所在目录为基准,所以导致全局调用时操作系统无法调用这个全局模块的宏命令解析工具 正确的配置方法 一.新建一个系统变量存储全局模块的宏命令的根目录 二 ...

  7. 安装软件,python安装,node.js安装,pycharm安装,vscode安装,PR, PS, LR.AE Windows开关机等,雪崩的时候没有一片雪花儿是无辜的

    安装 (汉语词语) 安装,汉语词汇,就是按照一定的程序.规格把机械或器材固定在一定的位置上,也指按照一定的方法.规格把机械或器材等固定在一定的地方. 出处 徐迟 <石油头>:"就 ...

  8. Node.js安装-yarm安装及环境配置-Windows篇

    一.安装环境 1.电脑系统:Windows 10 (64位) 2.Node.js:v15.5.1(64位) 3.NPM版本:7.3.0 二.安装Node.js步骤 1.Node.js版本下载: htt ...

  9. Node.js 安装及环境配置之 Windows 篇

    一.安装环境 1.本机系统:Windows 10 企业版(64位) 2.Node.js:node-v8.9.4-x64.msi(64位) 二.安装Node.js步骤 1.下载对应自己系统对应的 Nod ...

  10. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

最新文章

  1. oracle 禁用外键
  2. OSNIT信息收集分析框架OSRFramework
  3. android oom 检测工具,Android中UI检测、内存泄露、OOM、等优化处理
  4. linux 杀死t状态进程,Linux查杀stopped进程
  5. scala连接postgre数据库
  6. java io中断_JDK源码阅读:InterruptibleChannel 与可中断 IO
  7. 首屏动画及验证网络状态跳转
  8. 百度图神经网络学习——day01
  9. 64位装32位oracle软件,在64位linux下安装32位oracle软件
  10. java并发编程(13)-- 线程 死锁和定位
  11. 通过360安全卫士安装IE补丁后,IE浏览器会出问题
  12. (一)MATLAB中的输入与输出
  13. linux如何卸载金山安全终端,卸载和释放-文档中心-金山云
  14. 2023年入学华东师范大学MBA提前面试流程及时间-文都管联院
  15. Win11的22H2依然没有WSA(Windows Subsystem for Android)?
  16. 腾讯企鹅辅导 H5 性能极致优化
  17. ZBrush的用途是什么
  18. 【离线】esrally实践总结
  19. 液晶分子平行排列MATLAB程序,液晶百问:液晶分子排列方向如何改变
  20. 使用R语言画圆弧条形图

热门文章

  1. postgresql 9.1 基于wal的 pitr 恢复
  2. Liunx 常用命令
  3. ios开发之触摸时间处理
  4. 从aspx后台页面向浏览器输出js文件
  5. 近似推断:使用高斯混合模型
  6. 怎样解决python dataframe loc,iloc循环处理速度很慢的问题
  7. Codeforces Round #342 (Div. 2) D. Finals in arithmetic(想法题/构造题)
  8. AndroidStudio配置gradle,让App自动签名
  9. jQuery右键菜单ContextMenu使用笔记
  10. 独立树Graph Coloringhttp://poj.org/problem?id=1419最大团问题