pmarrapese / tg-logsaver

Save message history from Telegram Messenger
13 stars 1 forks source link

Application does not work with NPM v2 #1

Closed pmarrapese closed 8 years ago

pmarrapese commented 8 years ago
C:\Users\Paul\Desktop\tg-logsaver-master-preinstall>node ./ save
[20:51:01] [FATAL ERROR] [TypeError: hex is not a function]

Using new Buffer(someVal, 'hex') instead of Buffer.from(someVal, 'hex') fixes this issue.

Additionally on Node v4:

C:\Users\Paul\Desktop\tg-logsaver-master>node ./ auth
[21:13:03] [DEBUG] Connecting to Telegram (149.154.167.50)...
[21:13:05] [DEBUG] Connected.
Enter phone number (format: +12223334444):
+XXXXXXXXXX
[21:13:09] [DEBUG] Sending login code...
[21:13:09] [DEBUG] Fetching data center list...
[ERROR] Sat, 30 Jul 2016 04:13:10 GMT  ConstructorBuilder.registry Unable to retrieve a Type by Id [e033ae7d]
[ERROR] Sat, 30 Jul 2016 04:13:10 GMT  net.RpcChannel Unable to deserialize response aeb5d7372fb3c954a5f32b04b36de052f539819d0c7f3efb55b162c7ff35a2eb5459959da28c9e527bbfb7a01251fc537954536cca0bf7c5728ea754521a96edc160ba1b2644bf031557eac06ff1b806a8582fdbc13ac5a314f2329c74913bfb502eeed2fb0f9c146e7b8a1706cadecb718517a4d447de09e03536b374d4c3a104fa42a24b33bea2bdb19f1e2c3dcad9924d77712af87bac0f80668483460ad73e3d4b69134c307d3bd317fcffce7aa9fd07793cbefdee089a69884e48af57f499e82cce2e10060572c757f62c5a5f8be523db4ac0f665f5c1e0c2a19a5112e8299618d215265560cb6dae9bb4dfa59a221249a6a307d2cc561cc41898ff3a7c
ca3e4944503698f6b208233c96d195ca0588bbd3e97b0256 from mtproto.service.invokeAfterMsg due to Error: Unable to retrieve a Type by Id [e033ae7d]
    at Function.requireTypeFromBuffer (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:338:15)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:28:33)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:33:79)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:29:80)
    at EncryptedMessage.deserialize (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\message\encrypted-message.js:151:89)
    at EncryptedRpcChannel._deserializeResponse (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\encrypted-rpc-channel.js:223:99)
    at C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\rpc-channel.js:93:35
    at IncomingMessage.<anonymous> (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\http-connection.js:109:25)
    at IncomingMessage.g (events.js:260:16)
    at emitNone (events.js:72:20)
[ERROR] Sat, 30 Jul 2016 04:13:10 GMT  net.EncryptedRpcChannel Error: Unable to retrieve a Type by Id [e033ae7d]
    at Function.requireTypeFromBuffer (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:338:15)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:28:33)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:33:79)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:29:80)
    at EncryptedMessage.deserialize (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\message\encrypted-message.js:151:89)
    at EncryptedRpcChannel._deserializeResponse (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\encrypted-rpc-channel.js:223:99)
    at C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\rpc-channel.js:93:35
    at IncomingMessage.<anonymous> (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\http-connection.js:109:25)
    at IncomingMessage.g (events.js:260:16)
    at emitNone (events.js:72:20)
[ERROR] Sat, 30 Jul 2016 04:13:10 GMT  net.EncryptedRpcChannel Error: Unable to retrieve a Type by Id [e033ae7d]
    at Function.requireTypeFromBuffer (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:338:15)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:28:33)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:33:79)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:29:80)
    at EncryptedMessage.deserialize (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\message\encrypted-message.js:151:89)
    at EncryptedRpcChannel._deserializeResponse (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\encrypted-rpc-channel.js:223:99)
    at C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\rpc-channel.js:93:35
    at IncomingMessage.<anonymous> (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\http-connection.js:109:25)
    at IncomingMessage.g (events.js:260:16)
    at emitNone (events.js:72:20)
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: Unable to retrieve a Type by Id [e033ae7d]
    at Function.requireTypeFromBuffer (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:338:15)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:28:33)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:33:79)
    at deserialize (eval at createConstructor (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\node_modules\telegram-tl-node\lib\builder\constructor-builder.js:115:27), <anonymous>:29:80)
    at EncryptedMessage.deserialize (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\message\encrypted-message.js:151:89)
    at EncryptedRpcChannel._deserializeResponse (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\encrypted-rpc-channel.js:223:99)
    at C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\rpc-channel.js:93:35
    at IncomingMessage.<anonymous> (C:\Users\Paul\Desktop\tg-logsaver-master\node_modules\telegram-mt-node\lib\net\http-connection.js:109:25)
    at IncomingMessage.g (events.js:260:16)
    at emitNone (events.js:72:20)

C:\Users\Paul\Desktop\tg-logsaver-master>
pmarrapese commented 8 years ago

This ended up being an NPM v2 vs. NPM v3 problem. NPM v3 was installing a correctly-flattened dependency tree, while NPM v2 was not doing this for some reason. This resulted in 2 copies of the telegram-tl-node library (in telegram.link's dependency folder and telegram-mt-node's dependency folder), despite each of these libraries requiring the same version of telegram-tl-node. Telegram types were then being registered in either of the copies, and the application would crash when it tried to access a type that the other had registered.

If the application itself required telegram-tl-node, NPM v2 would flatten the tree correctly and the issue would not occur.

However, this was all a side effect of a more broad issue: Apparently, consumers of the TG libraries are only supposed to use telegram-link, and not the TL or MT libraries directly. The authentication logic has been updated so the application no longer requires telegram-mt-node.

pmarrapese commented 8 years ago

Additionally, buffer construction has been adjusted to the old (deprecated) syntax for now for better backwards compatibility with Node < v6.