Ошибка при настройке модуля 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.