我使用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函数开始工作?
答案 0 :(得分:0)
我终于解决了这个问题! 我找到了一个code来完成zlib的工作,我更改了telegram.link包,以便使用这个而不是内置的nodejs:
UITableView