node.jsとnpm installしたパッケージのバージョンが不一致で起こるエラーが原因であることが多い印象。
TL;DR
いただきものpackage.jsonの場合
→nodebrewでnodeのバージョンを変えてみる
nodeのバージョンを変えても動かないor自分でpackage.jsonを変えた場合
→package.jsonに記入しているパッケージのバージョンをnodeに合わせる
いただきものpackage.jsonの場合
nodebrewでnodeのバージョンを変えてみる
homebrewが入っていることが前提です。
入っていない場合はこちらを参考にnode.jsをアンインストールの上、
homebrewとnodebrewをインストールしてください。
0.Homebrewとnodebrewのインストール
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew -v
Homebrew 1.9.1
Homebrew/homebrew-core (git revision 61f95; last commit 2019-01-11)
$ brew install nodebrew
$ nodebrew -v
nodebrew 1.0.1
/*以下略*/
1.nodebrewでnodeのバージョンを変更する
いただきものpackage.jsonの場合は、先方にnodeのバージョンをお尋ねください。
仮に、現在のnodeが8系、先方の使用しているnodeが10系だとします。
$ nodebrew -ls
v8.9.4
current: v8.9.4
$ nodebrew ls-remote
/*中略*/
v10.0.0 v10.1.0 v10.2.0 v10.2.1 v10.3.0 v10.4.0 v10.4.1 v10.5.0
v10.6.0 v10.7.0 v10.8.0 v10.9.0 v10.10.0 v10.11.0 v10.12.0 v10.13.0
v10.14.0 v10.14.1 v10.14.2 v10.15.0 v10.15.1 v10.15.2 v10.15.3
/*以下略*/
$ nodebrew install v10
Fetching: https://nodejs.org/dist/v10.15.3/node-v10.15.3-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully
$ nodebrew ls //インストールされているか確認
v8.9.4
v10.15.3
current: v8.9.4
$ nodebrew use v10
use v10.15.3
$ nodebrew ls //切り替わっているか確認
v8.9.4
v10.15.3
current: v10.15.3
nodeのバージョンを変えた状態でnpm installを正常終了できれば成功。
nodeのバージョンを変えても動かないor自分でpackage.jsonを変えた場合
package.jsonに記入しているモジュールのバージョンをnodeに合わせる
npm installしたらnoticeやwarningが出る場合。
$ npm install
・・・
npm notice created a lockfile as package-lock.json. You should commit this file.
added 913 packages from 636 contributors and audited 12116 packages in 38.344s
found 8 vulnerabilities (3 low, 1 moderate, 4 high)
run `npm audit fix` to fix them, or `npm audit` for details
こちらの記事(参考:npm installしたパッケージの更新確認とアップデート(npm-check-updates))を参考に、
package.json内のパッケージのバージョンを更新します。
0.npm-check-updatesコマンドをグローバルインストールする
$ npm install -g npm-check-updates
1.対応していないパッケージを調べる
$ npm outdated
Package Current Wanted Latest Location
del 3.0.0 3.0.0 4.0.0 anken-name
gulp-autoprefixer 4.0.0 4.0.0 6.0.0 anken-name
gulp-plumber 1.2.0 1.2.0 1.2.1 anken-name
gulp-sass 3.1.0 3.1.0 4.0.2 anken-name
run-sequence 2.2.0 2.2.0 2.2.1 anken-name
2.npm-check-updatesコマンドを実行する
$ ncu -u
Upgrading /ほにゃらら/dev/frontend/gulp/package.json
[====================] 11/11 100%
browser-sync ^2.3.1 → ^2.26.3
del 3.0.0 → 4.0.0
gulp-autoprefixer 4.0.0 → 6.0.0
gulp-plumber 1.2.0 → 1.2.1
gulp-sass ~3.1 → ~4.0
run-sequence 2.2.0 → 2.2.1
Run npm install to install new versions.
$ npm update
3.outdatedに引っかかるパッケージが消えたか確認する
$ npm outdated
何も表示されなくなったのでOK。