Gulp.js をインストールしたはずなのに Error: Cannot find module ‘gulp-util’ というエラーメッセージが表示されて、うまく動作しないことがあります。
まさに今、私が後輩から聞かされているように。
gulp-util は 2017年末の gulp v4.0.0-alpha.3 から非推奨になっているので、今さら出てくるのも一見すると不思議な話です。
公式ページでも以下のような手順でインストールすることが指示されていますので、理想的な場合にはこのような出力になるはずです。
1 2 3 4 5 6 |
$ npm install gulp-cli -g $ npm install gulp -D $ npx -p touch nodetouch gulpfile.js $ gulp --version CLI version: 2.2.0 Local version: 4.0.2 |
ところがエラーメッセージが表示されている画面を見ると、そうはなっていません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ gulp --version module.js:550 throw err; ^ Error: Cannot find module 'gulp-util' at Function.Module._resolveFilename (module.js:548:15) at Function.Module._load (module.js:475:25) at Module.require (module.js:597:17) at require (internal/module.js:11:18) at Object.<anonymous> (/usr/lib/nodejs/gulp/bin/gulp.js:4:13) at Module._compile (module.js:653:30) at Object.Module._extensions..js (module.js:664:10) at Module.load (module.js:566:32) at tryModuleLoad (module.js:506:12) at Function.Module._load (module.js:498:3) |
動作環境は次の通りで、とくにシステム更新を怠っているわけでもなさそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ node --version v13.2.0 $ npm --version 6.14.2 $ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.4 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.4 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic |
しかし gulp のインストール位置を調べてみると何かがおかしいです。
1 2 |
$ which gulp /usr/bin/gulp |
どうしてこうなるの?と少し調べてみると Ubuntu 18.04.4 LTS で gulp コマンドが見つからない場合、apt からインストールできるというメッセージが表示されるようです。
1 2 3 4 5 |
$ gulp --help Command 'gulp' not found, but can be installed with: sudo apt install gulp |
その指示通りにインストールするとうまく動かなくなりますので、最初にやるべきことは(もしインストールされているならば)古いバージョンの gulp を消すことです。
1 |
$ sudo apt remove --purge gulp -y |
それから公式ページの手順に従って現在の安定版をインストールして、インストール先のディレクトリにパスを通します。
1 2 3 4 5 6 7 8 |
$ npm i -g gulp-cli $ export PATH=$(npm config get prefix)/bin:$PATH $ which gulp /home/hoge/.npm-global/bin/gulp $ gulp --version CLI version: 2.2.0 Local version: Unknown |
うまくインストールできましたら大丈夫なはずなので、~/.bashrc にでも PATH を付け足しておけばいつでも使えるようになるはずです。