nw.jsとneon-cliを使っていてバージョン違いに疲弊したのでメモ。
nodejs初心者なので、パッケージ管理ツールの使い方がおかしいかもしれません。こうした方がいいとかあれば是非教えていただきたい。
#地獄のエラーメッセージ「compiled against a different Node.js version」
自分はパッケージ管理にyarnを使っていたのでハマりました。yarnでパッケージ管理をしていると、npmパッケージ系のコマンドが効かないシーンがあるのかもしれません。そこをゴッチャにすると、ハマります。
このエラーは、__モジュールが別のnodejsバージョンで動作するもの__だと言っているようです。
##実行環境
OS→OSX10.14(Mojave)
nodeバージョン管理→nodebrew
nodeグローバルパッケージ管理→npm
nodeローカルパッケージ管理→yarn
nodejs→v11.0.0
(バージョン変更したりしていますが、v10.9あたりと行き来していました)
##しらみつぶしにやりましょう
###1.現在のnodejsのバージョンを確認
ターミナルから
node -v
###2.必要な全てのモジュールが対応しているnodejsのバージョンを確認
これは手作業で全部確認したんですが、もっとざっと見れる方法があったんでしょうか..。
####必要があればnodejsのバージョン変更
インストール済みのバージョンを確認
nodebrew ls
ここに欲しいバージョンがなければインストール
nodebrew install v0.0.0
←欲しいバージョン入力
バージョン適用
nodebrew use v0.0.0
←適用バージョン入力
###3.npmのグローバルインストールをリビルド
これは正直意味があったのかはわかりません。
npm rebuild -g
###4.npmまたはyarnのローカルインストールをリビルド
node_modulesなどはそのままに、
###5.プロジェクトのnode_modulesディレクトリを削除,モジュール再インストール
なぜか4の方法でダメだった時はこれも試します。
node_modules削除
rm -r node_modules
再インストール
package.jsonのdependencies内の、それぞれのモジュールバージョンを確認。
そしてパッケージ再インストール
npm install
##終わりに
今の所はこれぐらいの対応でなんとかなりました。
これでも無理な時は、もしかしたら欲しいモジュールの必要nodeバージョンが全部違っているのかもしれません。その時はあきらめましょう!