node-ffi 公式は node 12 でビルドが通らない
node から直接Cのライブラリを呼び出せる ffi というライブラリを インストールしようとしたところ、以下のようなエラーが出てインストール出来ませんでした。
$ npm install --save ffi > ref@1.3.5 install /home/yusuke/ffi_sample/node_modules/ref > node-gyp rebuild make : Entering directory '/home/yusuke/tmp/node_modules/ref/build' CXX(target) Release /obj .target /binding/src/binding .o .. /src/binding .cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE {anonymous}::WriteObject(Nan::NAN_METHOD_ARGS_TYPE)’: .. /src/binding .cc:222:43: error: no matching function for call to ‘v8::Value::BooleanValue()’ bool persistent = info[3]->BooleanValue(); ... 省略 gyp ERR! build error gyp ERR! stack Error: ` make ` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit ( /usr/lib/node_modules/npm/node_modules/node-gyp/lib/build .js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:210:5) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal /child_process .js:272:12) |
依存している ref というライブラリのビルドに失敗しているようです。
この v8::Value::BooleanValue()
等の参照関数はだいぶ前から deprecated だったようです。
そして、node v.12 でついに削除されました。
そのため、node v.12 以降ではビルドが通らなくなってしまったのです。
解決策(一時的な)
幸いなことに、この問題は既に PullRequest として報告されていました。
参考
Support Node v12.0.0 by lxe · Pull Request #114 · TooTallNate/ref · GitHub
ところが、この修正にも問題があって、この修正に対する PullRequest も上がっています1。
そして、ref
だけでなく ffi
自体と関連するライブラリにも同じ問題があり、修正が必要です。
参考
Support Node v12.0.0 by lxe · Pull Request #544 · node-ffi/node-ffi · GitHub
とまぁ、たらい回しに探していった結果、fishg/node-ffi 上の修正が要件をみたしているようです。
レポ指定2でインストールすれば使えます。
$ npm install "ffi@fishg/node-ffi.git#node-12" |
しかし、ref や ffi はどちらも1年近くメンテナンスされていません。 この node v.12 に対応する PullRequest も半年以上放置。 正式に対応する日はくるのでしょうか?
そして、deprecated な関数をかなり呼んでます。 つまり、また node のバージョンが上がったらビルドが通らなくなる可能性大。
0 件のコメント:
コメントを投稿