如何使用MSVC10编译器在x64窗口上的node-canvas中启用jpeg支持?

我需要在nodejs服务器端渲染jpeg图像。 我使用以下构build指令安装canvas npm模块: https : //github.com/Automattic/node-canvas/wiki/Installation—Windows我有C:\ libjpeg-turbo \,因为它在手册中提到过。 如果我做:

npm安装canvas

那么这段代码不会启动onload:

var data = fs.readFileSync("./t.jpg"); var img = new Image(); img.onload = function () { console.log("onload"); }; img.src = data; 

(它与.png数据一起使用)。 如果我在我的命令行中指定–with-jpeg,那么MSVC会抱怨缺lesslibjpeg.h。 在此之后npm用msvc项目删除文件,所以我无法自己设置path(是否可以closures此清理?)

那么,如何用jpeg支持为窗口创buildcanvas? 发现问题,但在networking上没有关于这个话题的答案。

看起来像bind.gyp在#143行缺少'include_dirs'指令,因此编译器可以在C:\ libjpeg-turbo \目录下找到libjpeg.h。 尝试插入:

  'include_dirs': [ 'c:/libjpeg-turbo', ], 

安装MSVC10和64位nodejs。 当你的构建失败时,使用下面的分配,你可以在网上找到:

  • 解压缩gtk + -bundle_2.22.1-20101229_win64.zip到c:/ gtk。 使用这个版本,其他人失败了

  • 将libjpeg-turbo-1.4.0-vc64.exe设置为C:\ libjpeg-turbo(32位库将失败并且没有任何有意义的消息)

  • 转到。\ node_modules \ canvas \ build \并修改你的binding.gyp。 添加“变量”:
  { 'GTK_Root%': 'C:/GTK', # Set the location of GTK all-in-one bundle 'with_jpeg%': 'true', 'libjpeg_root%':'C:/libjpeg-turbo', 'with_gif%': 'false', 'with_pango%': 'false', 'with_freetype%': 'false' } 

并且

 ['with_jpeg=="true"', { 'defines': [ 'HAVE_JPEG' ], 'conditions': [ ['OS=="win"', { 'libraries': [ '-l<(libjpeg_root)/lib/jpeg-static.lib','-l<(libjpeg_root)/lib/jpeg.lib' ], 'include_dirs': [ '<(libjpeg_root)/include' ] }, { 'libraries': [ '-ljpeg' ] }] ] }] 

然后执行以下命令,在.gyp文件所在的文件夹中:

node-gyp配置

node-gyp构建

恕我直言,这些模块的库应该被纳入npm发行版的一部分,奇怪的期望来自nodejs程序员的WIN32 / C ++专业知识…