我正在尝试使用uic-918-3来解码来自Deutsche Bahn的旅行条形码(它们正在使用特殊的加密Aztec代码)。该库使用节点核心模块zlib来获取未压缩的票证数据。在本地测试我的代码时,一切都可以正常工作,但是一旦我尝试在docker容器中运行它(我的公司使用debian docker映像),我就会收到错误消息
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上运行它时,可能会缺少某种依赖性,因为它没有任何错误。
我还已经仔细检查了docker镜像中的node,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文档,该字典的默认值也应该是默认值),我也会遇到相同的错误。
我需要在docker容器中安装一些东西以使zlib正常工作吗?