realmをyarn addするためにnodeのdowngradeする

新しくreact-nativeのアプリを作ろうと思い、とりあえずDBは必要になりそうなのでrealmを追加しようとした。

yarn add realm

すると、エラーがずらずら〜っと…

(省略)
error /Users/hoge/react-native/hoge_prj/node_modules/realm: Command failed.
Exit code: 1
Command: node-pre-gyp install --fallback-to-build
Arguments:
Directory: /Users/hoge/react-native/hoge_prj/node_modules/realm
Output:
node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@0.6.39
node-pre-gyp info using node@10.7.0 | darwin | x64
node-pre-gyp info check checked for "/Users/hoge/react-native/hoge_prj/node_modules/realm/compiled/node-v64_darwin_x64/realm.node" (not found)
node-pre-gyp http GET https://static.realm.io/node-pre-gyp/2.14.0/realm-v2.14.0-node-v64-darwin-x64.tar.gz
node-pre-gyp http 404 https://static.realm.io/node-pre-gyp/2.14.0/realm-v2.14.0-node-v64-darwin-x64.tar.gz
node-pre-gyp ERR! Tried to download(404): https://static.realm.io/node-pre-gyp/2.14.0/realm-v2.14.0-node-v64-darwin-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for realm@2.14.0 and node@10.7.0 (node-v64 ABI, unknown) (falling back to source compile with node-gyp)
node-pre-gyp http 404 status code downloading tarball https://static.realm.io/node-pre-gyp/2.14.0/realm-v2.14.0-node-v64-darwin-x64.tar.gz
node-pre-gyp ERR! Tried to download(undefined): https://static.realm.io/node-pre-gyp/2.14.0/realm-v2.14.0-node-v64-darwin-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for realm@2.14.0 and node@10.7.0 (node-v64 ABI, unknown) (falling back to source compile with node-gyp)
node-pre-gyp http Connection closed while downloading tarball file
(省略)

エラー内で404になっているファイルは、ブラウザでアクセスしてもやっぱり404。
何だこれはとググる。

原因

realmはnodeのv10に未対応らしい。

Support Node 10. WAS: Realm fails to install via yarn or npm, with the error Failed to execute ‘node-gyp build –fallback-to-build –module=[hidden_path]/node_modules/realm/compiled/node-v64_darwin_x64/realm.node

対策

nodeを複数バージョン使えるようにして、react-nativeではv9を使うことにする。

手順

1.brewで入れたnodeをuninstall

brew uninstall node --ignore-dependencies

2.ndenvを入れる

riywo/ndenv

rubyのrbenvみたいにnodeを複数バージョン分けて使えるようにしてくれる。

brew install ndenv

3.node-buildを入れる

ndenvのinstallを使えるようにするために入れる。
ndenvのマニュアルに書いてある。

git clone https://github.com/riywo/node-build.git $(ndenv root)/plugins/node-build

4.nodeを入れる

ndenv install v9.11.2
ndenv install v10.7.0

5.使うnodeを設定する

とりあえずシステム全体では最新を使う。

ndenv global v10.7.0

react-nativeのプロジェクトではv9を使う。

cd react-native/hoge_prj
ndenv local v9.11.2

これでrealmのインストールが出来るようになった。
めでたし。

コメント

タイトルとURLをコピーしました