我正在尝试在 Node js 上使用 Canvas 。我正在使用 Windows Vista。在基本方法 npm install canvas
失败后(见下面的错误),我查阅了一些教程,这是我尝试过的:
来源:
installing-node-canvas-for-windows
LearnBoost/node-canvas/wiki/Installation---Windows
- 我已安装较旧的 Python (2.7.5) 并将其添加到 PATH(并从 PATH 中删除 Python 3.2)
- 我已检查是否安装了 Microsoft Visual Studio 2010 Professional
- 我已从 http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip 下载了“一体式”GTK 包, 解压到 C:\GTK\并添加 'C:\GTK\bin' 到 PATH
登录控制台(在cmd中运行npm install canvas
后):
日志包含几个警告,我不认为这些是问题 - 它主要类似于“从 double 转换为浮点”,并且一个错误标记为红色:
init.cc
d:\pathToApp\node_modules\canvas\src\PNG.h(5): fatal error C1083: Cannot
open include file: 'cairo.h': No such file or directory [d:\pathToApp\n
ode_modules\canvas\build\canvas.vcxproj]
在日志的最后有:
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\
npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:789:
12)
gyp ERR! System Windows_NT 6.0.6002
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd d:\pathToApp\node_modules\canvas
gyp ERR! node -v v0.10.16
gyp ERR! node-gyp -v v0.10.9
gyp ERR! not ok
npm ERR! weird error 1
npm ERR! not ok code 0
之后,node-module文件夹中什么都没有出现(没有canvas子目录,安装不成功后npm删除了子目录)。
所以我也尝试从github手动下载canvas模块,在node-modules中解压,然后在node-modules/canvas中运行node-gyp configure
成功,node -gyp build
,不幸的是给了我同样的错误Cannot open include file: 'cairo.h'
。
我已经仔细阅读了我在此找到的所有内容。如果您可以提出任何帮助,请提供帮助。
最佳答案
我已经设法让它在我的新 Windows 8 机器上运行,所以我想分享一些对其他人有帮助的细节。
我正在使用:
- Windows 8.1(64 位)
- Visual Studio 2013(更新 2)
- Python 2.7.8
- 适用于 Windows 64 位的 GTK (http://www.gtk.org/download/win64.php)
- Node 0.10.28
- Node -gyp 1.0.1
程序
确保路径中有 Python 2 和 GTK\bin。
我已经从 https://github.com/Automattic/node-canvas 手动下载了文件并将其保存到 node_modules/canvas。
然后我在 Canvas 目录中运行 node-gyp configure build
。发生错误。为了匹配 GTK 文件夹中的实际文件,我必须编辑 binding.gyp (https://github.com/Automattic/node-canvas/blob/master/binding.gyp)。
例如:
- 第 59 行:“(GTK_Root)/lib/libpng.lib” -> “(GTK_Root)/lib/libpng.dll.a”
- 第 34 行:“(GTK_Root)/bin/libpng14-14.dll” -> “(GTK_Root)/bin/libpng15-15.dll”
- ...
还有更多,您应该能够从错误日志中读取哪些文件出现问题,然后编辑名称以匹配 GTK 文件夹中的文件。
编辑 binding.gyp 后,命令 node-gyp configure build
成功完成。虽然我无法在 Canvas 中处理一些 jpg 文件(我没有正确测试过),但 png 文件可以正常工作。
如果 node-gyp 失败
您可能会遇到每个 node-gyp 命令都失败并显示类似以下消息(可能标记为红色):
"...bcrypt_lib.vcxproj(47,46):错误 MSB4025:无法加载文件项目。指定编码的无效字符。第 47 行,位置 46。"
这很可能是因为您的用户文件夹名称中有特殊字符。 (事实上,Windows 8 会根据您的名字自动创建用户文件夹的名称,这是 Win 8 最糟糕的事情)。
2 个快速解决方案:
- 使用正常(无特殊字符)名称 a 创建另一个用户并从该帐户运行
node-gyp configure build
- 使用这个快速修复(它对我有用):https://github.com/TooTallNate/node-gyp/pull/366
希望这会有所帮助。
关于javascript - 如何在 Windows 上安装 Node js Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310575/