Ошибка при настройке модуля Node Canvas с поддержкой jpeg в Windows 2016

Я пытаюсь построить приложение с fabric.js на сервере узла. Я выполнил задокументированные шаги и смог установить модули canvas и fabric.

Когда я попытался включить поддержку файлов jpeg путем обновления файла binding.gyp, 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

холст проект успешно строится без ошибок

Я обновил binding.gyp в папке "node_modules/canvas" следующим

'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 и перестраиваем тестовый код, то он работает без проблем. Я не совсем уверен, где я иду не так. Может кто-нибудь, пожалуйста, помогите мне решить эту проблему.

0 ответов

Для поддержки JPEG в Windows требуется node-canvas 2.x, а fabric.js в настоящее время использует 1.6.x. Существуют и другие изменения исходного кода, помимо внесенных вами изменений конфигурации сборки (см. https://github.com/Automattic/node-canvas/pull/841/files).

Вы можете сохранять в формате PNG до обновления fabric.js, возможно, используя другой инструмент для преобразования PNG в JPEG, если вы действительно хотите JPEG.

Другие вопросы по тегам