zlib.gunzipSync不在meteorhacks中使用的node.js中:npm

时间:2016-02-18 13:56:10

标签: node.js meteor npm zlib

我使用meteorhacks:npm在meteor中导入npm模块Telegram.link。它工作正常,但当我调用一个特定的函数时,我看到这个错误:

W20160218-16:37:38.369(3.5)? (STDERR) /home/omid/Documents/test3/.meteor/local/isopacks/npm-container/npm/node_modules/telegram.link/node_modules/telegram-mt-node/lib/net/encrypted-rpc-channel.js:75
W20160218-16:37:38.370(3.5)? (STDERR)         var buffer = zlib.gunzipSync(packedData);
W20160218-16:37:38.370(3.5)? (STDERR)                           ^
W20160218-16:37:38.377(3.5)? (STDERR) TypeError: Object [object Object] has no method 'gunzipSync'
W20160218-16:37:38.377(3.5)? (STDERR)     at checkIfGzipped (/home/omid/Documents/test3/.meteor/local/isopacks/npm-container/npm/node_modules/telegram.link/node_modules/telegram-mt-node/lib/net/encrypted-rpc-channel.js:75:27)
W20160218-16:37:38.377(3.5)? (STDERR)     at [object Object]._onTimeout (/home/omid/Documents/test3/.meteor/local/isopacks/npm-container/npm/node_modules/telegram.link/node_modules/telegram-mt-node/lib/net/encrypted-rpc-channel.js:67:28)
W20160218-16:37:38.377(3.5)? (STDERR)     at Timer.listOnTimeout [as ontimeout] (timers.js:121:15)

我认为问题在于meteorhacks中使用的NodeJ版本:npm(v0.10。*根据.node_version文件),在该版本中没有 gunzipSync 。我看了v5.6.0,那里有一个gunzipSync。 我将文件.node_version中的版本更改为v5.6。*并且没有任何更改。 抛出异常的代码是:

var zlib = require('zlib');
function checkIfGzipped(obj) {
    if (typeof obj !== 'boolean' && obj.instanceOf('mtproto.type.Gzip_packed')) {
        var packedData = obj.packed_data;
        logger.info("Gzip packed data [%s]", packedData ? packedData.toString('hex') : null);
        var buffer = zlib.gunzipSync(packedData);
        logger.info("Buffer after gunzip [%s]", buffer.toString('hex'));
        var Type = tl.TypeBuilder.requireTypeFromBuffer(buffer);
        return new Type({buffer: buffer}).deserialize();
    }
    else return obj;
}

有没有办法注入gunzipSync函数的功能,以便checkIfGzipped函数开始工作?

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题! 我找到了一个code来完成zlib的工作,我更改了telegram.link包,以便使用这个而不是内置的nodejs:

UITableView