

linux（firetvにインストールしたtermux)下で、  
nodeプログラムが以下の様にエラーで止まります。  
FirebaseのRealtaime Databaseに保存したデータの更新を見張るプログラムです。  
解決する方法をお教えください。

[code]

    ~ $ uname -a
    Linux localhost 3.10.54+ #1 SMP PREEMPT Mon Apr 23 21:32:34 UTC 2018 armv7l Android
    ~ $ node -v
    v9.11.1
    ~ $ echo $PATH
    /data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets
    ~ $ npm bin -g
    /data/data/com.termux/files/home/usr/local/bin
    (not in PATH env variable)
    ~/ $ node firebase-listener.js
    WARNING: linker: grpc_node.node: unused DT entry: type 0x6ffffef5 arg 0xb60
    /data/data/com.termux/files/home/rm_mini3/node_modules/@firebase/firestore/node_modules/grpc/src/grpc_extension.js:57
        throw e;
        ^
    
    Error: dlopen failed: cannot locate symbol "inflate" referenced by "grpc_node.node"...
        at Object.Module._extensions..node (internal/modules/cjs/loader.js:683:18)
        at Module.load (internal/modules/cjs/loader.js:566:32)
        at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
        at Function.Module._load (internal/modules/cjs/loader.js:498:3)
        at Module.require (internal/modules/cjs/loader.js:598:17)
        at require (internal/modules/cjs/helpers.js:11:18)
        at Object.<anonymous> (/data/data/com.termux/files/home/rm_mini3/node_modules/@firebase/firestore/node_modules/grpc/src/grpc_extension.js:32:13)
        at Module._compile (internal/modules/cjs/loader.js:654:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
        at Module.load (internal/modules/cjs/loader.js:566:32)
    
[/code]

## 補足

[code]

    npm install  firebase-tools
    firebase login
    firebase init
    
[/code]

などは、おそらく問題ない。

同じソースが別の環境（ubuntu(WSL)）では動きます。

<https://github.com/termux/termux-packages>  
の一番下のほうに書いてあることに関係あるのかなと思っているのですが。  
cannot locate symbol "inflate" referenced by "grpc_node.node"とあるので、  
grpc_node.nodeが"inflate"を参照しているけれども、ライブラリファイルの  
ロードができていないという意味でしょうか？  
パスの問題なのか、何らかをソースからコンパイルする必要があるのか?  
具体的にどうすればよいのかがわかりません。

以下6/13追記

[code]

    ~ $ pkg  install zlib1g-dev
    Hit:1 https://termux.net stable InRelease
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    All packages are up to date.
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package zlib1g-dev
    ~ $ find / -name libz.so 2>/dev/null
    /system/lib/libz.so
    
[/code]

以下6/13追記その２

[code]

    ~ $ echo $LD_LIBRARY_PATH
    /system/lib:/data/data/com.termux/files/usr/lib
    ~ $ export LD_LIBRARY_PATH=/system/lib:$LD_LIBRARY_PATH
    ~ $ node firebase-listener.js
    (上と同じエラーメッセージ)
    ~ $ cat /data/data/com.termux/files/home/rm_mini3/node_modules/@firebase/firestore/node_modules/grpc/src/grpc_extension.js
    'use strict';
    
    var binary = require('node-pre-gyp/lib/pre-binding');
    var path = require('path');
    var binding_path =
        binary.find(path.resolve(path.join(__dirname, '../package.json')));
    var binding;
    try {
      binding = require(binding_path);
    } catch (e) {
      let fs = require('fs');
      let searchPath = path.dirname(path.dirname(binding_path));
      let searchName = path.basename(path.dirname(binding_path));
      let foundNames;
      try {
        foundNames = fs.readdirSync(searchPath);
      } catch (readDirError) {
        let message = `The gRPC binary module was not installed. This may be fixed by running "npm rebuild"
    Original error: ${e.message}`;
        let error = new Error(message);
        error.code = e.code;
        throw error;
      }
      if (foundNames.indexOf(searchName) === -1) {
        let message = `Failed to load gRPC binary module because it was not installed for the current system
    Expected directory: ${searchName}
    Found: [${foundNames.join(', ')}]
    This problem can often be fixed by running "npm rebuild" on the current system
    Original error: ${e.message}`;
        let error = new Error(message);
        error.code = e.code;
        throw error;
      } else {
        throw e;  //ここでエラー
      }
    }
    module.exports = binding;
    
[/code]


CC BY-SA 4.0
2018-06-08T14:45:04.587
44634
2018-06-13T13:54:54.910
2018-06-13T13:54:54.910
28813
28813
question
android node.js firebase
linuxでのnode.jsプログラムがエラー（Error: dlopen failed: cannot locate symbol）