zlib не работает в контейнере Debian Docker - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь использовать uic-918-3 для декодирования дорожного штрих-кода от Deutsche Bahn (они используют специальные зашифрованные коды ацтеков). Библиотека использует модуль ядра узла zlib для получения данных несжатого билета. При локальном тестировании моего кода все работает без нареканий, но как только я пытаюсь запустить его в докер-контейнере (моя компания использует образ докера Debian), я получаю сообщение об ошибке

Error: Missing dictionary
      at Zlib.zlibOnError [as onerror] (zlib.js:168:17)
      at processChunkSync (zlib.js:407:12)
      at zlibBufferSync (zlib.js:154:12)
      at Object.syncBufferWrapper [as unzipSync] (zlib.js:746:14)
      at getTicketDataUncompressed (/node_modules/uic-918-3/lib/barcode-data.js:30:17)
      at module.exports (/node_modules/uic-918-3/lib/barcode-data.js:79:36)
      at interpretBarcodeFn (/node_modules/uic-918-3/index.js:31:62)

Я думаю, что какая-то зависимость может отсутствовать, так как она работает без ошибок, когда я запускаю ее на WSL или Debian.

Я также дважды проверил, отличаются ли какие-либо версии узлов, npm, zlib, gzip и zlib1g в образе докера от тех, которые я использую локально, но они все одинаковые. Затрагиваемый код (barcode-data.js: 79: 36) равен

function getTicketDataUncompressed(data) {
      if (data && data.length > 0) {
        console.log(data)
        return zlib.unzipSync(data)
      } else {
        return data
      }
    }

Даже если я передаю объект опций вручную с пустым словарем (который должен быть значением по умолчанию в соответствии с документами nodejs), я получаю ту же ошибку.

Нужно ли что-то устанавливать в контейнере докера для работы zlib?

...