npmでgrunt-imageminをインストールする時にerrorになった話(Win8だけ?)

  • 28 Feb 2015

久しぶりにはまりました。windows8上でnpmからgrunt-cliをインストールできなくて一日くらい悩んでました。だいたいこういうのは結論が解るとたいしたこと無かったな、と思うのはなぜなのでしょうか・・。

環境

  • Windows8
  • nodejs 0.10.13
  • grunt v0.4.5
  • npm 1.3.2

症状

grunt-imageminをインストールしようとしたら、以下のようなエラーが大量にでてきてました。最初は結構うまくいっている様子だったのですが途中からエラーのオンパレード・・。

$ npm install grunt-imagemin

...

npm ERR! tar.unpack error reading C:\Users\*****\AppData\Roaming\npm-cache\is-zip\1.0.0\package.tgz
npm ERR! Error: OK, write
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\apps\myapps
npm ERR! node -v v0.10.13
npm ERR! npm -v 1.3.2
npm ERR! code OK
npm ERR! tar.unpack error reading C:\Users\*****\AppData\Roaming\npm-cache\is-zip\1.0.0\package.tgz
npm ERR! Error: OK, close
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\apps\myapps
npm ERR! node -v v0.10.13
npm ERR! npm -v 1.3.2
npm ERR! code OK
npm http 304 https://registry.npmjs.org/pend

やった事

情報が少なかったのでWeb上で出ていた以下の手段はことごとくやってみました。が、いずれもダメでした。

  • npm cache clean
  • C:\<username>\AppData\Roaming\npmのパーミッション変更(変更できなかった)
  • npm config set dev true
  • C:\Users\<username>\AppData\Local\Temp以下のnpm関連フォルダの削除
  • package.jsonと同階層にあるnode-modulesフォルダの削除
  • 管理者権限でのnpm install grunt-imageminの実行
  • npm install grunt-imagemin --save-devでのインストール
  • nodejsのクリーンインストール
  • npm install --no-bin-links grunt-contrib-imagemin (たぶん意味ない)

その他にもWindows8でgrunt-imageminをインストールするときはjpegtran-binの最新版は使えないという 情報があったのでnpm install jpegtran-bin@0.2.0してみたり。

解決方法

結果的にはnpmのバージョンを最新にして、管理者権限でインストールできました。コマンドプロンプトやPowerShellを管理者権限で立ち上げて

$ npm install -g npm
$ npm install grunt-imagemin

で解決です。てっきりnodeをインストールしたときに同梱されるnpmで問題ないかと思っていたのですが、そんなことは無いんですね・・。ただ、Windows7の同僚は普通にインストールできていたので、Windows8だけの問題なのかもしれません。

参考

  • http://blog.unsweets.net/2014/11/npmerrorenoent-stat.html
  • http://qiita.com/Syn/items/140e6c3431e9cc8b06d1
  • http://blog.mitsuruog.info/2014/12/angular-fullstack-in-the-wild.html
  • http://meganetops.com/?p=43
  • https://github.com/gruntjs/grunt-contrib-imagemin/issues/109
  • http://askubuntu.com/questions/269727/npm-errors-when-installing-packages-on-windows-share
  • http://stackoverflow.com/questions/19569990/npm-install-doesnt-work-in-windows-powershell
  • http://blog.unsweets.net/2014/11/npmerrorenoent-stat.html
  • https://github.com/npm/npm/issues/5133
  • https://github.com/npm/npm/issues/3664
  • https://github.com/npm/npm/issues/3190