在Windows 2016上配置具有JPEG支持的Node Canvas模块时出错

时间:2018-08-13 14:42:02

标签: node.js canvas node-modules windows-server-2016 node-canvas

我正在尝试在节点服务器上使用fabric.js构建应用程序。我按照记录的步骤进行操作,并且能够设置画布和织物模块。

当我试图通过更新binding.gyp文件来包括对jpeg文件的支持时,node.canvas会中断。

当前配置

v8: '5.1.281.83'
node@6.6.0
node-gyp@3.8.0
npm: '6.4.0-next.0'

画布必备版本

GTK - gtk+-bundle_2.22.1-20101229_win64
jpeglib - libjpeg-turbo-2.0.0-vc64

安装步骤

npm i canvas

canvas项目成功构建,没有任何错误

我使用以下命令更新了“ node_modules / canvas”文件夹中的binding.gyp

'with_jpeg%': 'true', 
'libjpeg_root%': 'C:/libjpeg-turbo64',

更新了条件

['with_jpeg=="true"', {
  'defines': [
    'HAVE_JPEG'
  ],
  'conditions': [
    ['OS=="win"', {
     'copies': [{
        'destination': '<(PRODUCT_DIR)',
        'files': [
          '<(libjpeg_root)/bin/jpeg62.dll',
        ]
      }],
      'libraries': [
         '-l<(libjpeg_root)/lib/jpeg.lib'
      ],
      'include_dirs': [
        '<(libjpeg_root)/include'
      ]
    }, {
      'libraries': [
        '-ljpeg'
      ]
    }]
  ]
}]

更新绑定文件后,node-gyp重建工作正常,没有任何问题,一旦运行测试就完成

测试画布代码

var Canvas = require('canvas');

在运行测试代码时,出现以下错误

Error: The specified module could not be found.
\\?\C:\<AppPath>\node_modules\canvas\build\Release\canvas.node
    at Error (native)

如果我将with_jpeg变量设置为false并重新生成,则测试代码可以正常工作而没有任何问题。我不太确定我要去哪里。有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

Windows上的JPEG支持需要node-canvas 2.x,fabric.js当前使用1.6.x。除了您进行的构建配置更改外,还需要其他源代码更改(请参见https://github.com/Automattic/node-canvas/pull/841/files#diff-b92a52ffb02b7fb42c340919b0f983d6)。

您可以另存为PNG,直到fabric.js升级为止,如果您确实需要JPEG,可以使用其他工具将PNG转换为JPEG。