仮想サーファーの波乗り

仮想サーファーの日常

プログラミング・SNS分析・自動化などに関してよく書く雑記ブログ

【エラー解決】The engine "node" is incompatible with this module. Expected version ">=x.xx". Got "x.x.x"


f:id:virtual-surfer:20190330012957p:plain


Reactのアプリケーションを作ってみようかなとコマンドを叩くと、「nodeのバージョンが古いよ」というエラーが出たのでその時の対処手順メモ。


発生したエラー


$ create-react-app react-test

上記コマンドでreact-testという名前のReactアプリを作成しようとしたら以下のエラー発生。


$ create-react-app react-test

Creating a new React app in /Users/username/react-test

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...

yarn add v1.15.2
info No lockfile found.
[1/4] 🔍  Resolving packages...
warning react-scripts > react-app-polyfill > core-js@2.6.4: core-js@<2.6.5 is no longer maintained. Please, upgrade to core-js@3 or at least to actual version of core-js@2.
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
warning react-scripts > jest > jest-cli > prompts > kleur@2.0.2: Please upgrade to kleur@3 or migrate to 'ansi-colors' if you prefer the old syntax. Visit <https://github.com/lukeed/kleur/releases/tag/v3.0.0\> for migration path(s).
info There appears to be trouble with your network connection. Retrying...
warning react-scripts > eslint > file-entry-cache > flat-cache > circular-json@0.3.3: CircularJSON is in maintenance only, flatted is its successor.
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
[2/4] 🚚  Fetching packages...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
error react-dev-utils@8.0.0: The engine "node" is incompatible with this module. Expected version ">=8.10". Got "8.9.4"
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Aborting installation.
  yarnpkg add --exact react react-dom react-scripts --cwd /Users/username/react-test has failed.

Deleting generated file... package.json
Deleting react-test / from /Users/username
Done.


解決までの流れ


「Expected version ">=8.10". Got "8.9.4"」と言われているので、nodeのバージョンが古くなっているのかなと思いnodeのバージョンを確認。


$ node -v

v8.9.4

案の定古いですね。バージョン8.9.4になっています。


単純にnodeのバージョンあげればいいかなと思ってbrewでupgradeを試しましたが、すでにnodeの最新バージョンはinstall済みだと。

 $ brew upgrade node

Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
No changes to formulae.

/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/node.rb
Error: node 11.12.0 already installed
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:85:in `exit'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:85:in `upgrade'
/usr/local/Homebrew/Library/Homebrew/brew.rb:102:in `<main>'


node.jsをのversion管理するためのnodebrewを使うことに。

$ nodebrew

nodebrew 0.9.7

なければbrewでnodebrewをインストールしようと思いましたが、nodebrewは使える状態にありました。


古いnodeがあっても使うことはないだろうし、一旦nodeをアンインストールして最新のnodeだけインストールしておくことに。

$ brew uninstall --force node

Error: Refusing to uninstall /usr/local/Cellar/node/11.12.0
because it is required by yarn, which is currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies node

アンインストールさせてもらえない...。

強制的にアンインストールしたいなら「brew uninstall --ignore-dependencies node」を使えと。


$ brew uninstall --ignore-dependencies node

Uninstalling /usr/local/Cellar/node/11.12.0... (4,417 files, 50.2MB)

強制的にアンインストールしました。


以下のコマンドで安定版の最新バージョンをnodebrewでインストールしようとしましたが、失敗。

$ nodebrew install-binary stable

Fetching: https://nodejs.org/dist/v11.13.0/node-v11.13.0-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/username/.nodebrew/src/v11.13.0/node-v11.13.0-darwin-x64.tar.gz
Warning: : No such file or directory

curl: (23) Failed writing body (0 != 1058)
download failed: https://nodejs.org/dist/v11.13.0/node-v11.13.0-darwin-x64.tar.gz


nodebrewのパス設定ができていないのかな?ということでパス設定をして

$ nodebrew setup
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

再度nodeの安定版のインストール実行

$ nodebrew install-binary stable

Fetching: https://nodejs.org/dist/v11.13.0/node-v11.13.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

今度はインストール成功した!


nodeのバージョンを確認してみる。

 $ nodebrew ls

v11.13.0

current: none

「current: none」となっているので、どのnodeのバージョンを使うか設定されていない状態。


以下コマンドでバージョン11.13.0を使うようにする。

$ nodebrew use v11.13.0

use v11.13.0


nodeのバージョンは11.13.0になったか、以下コマンドで確認する。

$ node -v

v8.9.4

古いまま...。nodebrewのパスがうまく通ってないのかな?ということで、bashrcにパスを読み込ませるように「export PATH=$HOME/.nodebrew/current/bin:$PATH」を追加して.bashrcを保存する。

$ vi ~/.bashrc

export PATH=$HOME/.nodebrew/current/bin:$PATH


この状態で、別ターミナルを起動(= bashrcファイルを再読み込み)して、再度nodebrewで11バージョンを使うように明示し、nodeのバージョン確認。

$ nodebrew use v11.13.0
use v11.13.0

$ node -v
v11.13.0

バージョン11を使うようになっている!


この状態で満を持してReactアプリケーションを作成

$ create-react-app test

Creating a new React app in /Users/username/react-test.
...
We suggest that you begin by typing:

  cd react-test
  yarn start

Happy hacking!

Happy hacking! Reactアプリ作成できた〜!


以上、nodeのバージョン管理にちょっと詰まった時の解決方法メモでした。


では!