実際に遭遇したエラー
npmを使用して、あるパッケージをインストールしようとしたところ、見慣れないエラーが発生した。
$ npm search yeoman-generator
npm http GET https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1407061252696
npm http 200 https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1407061252696
npm ERR! TypeError: Object.keys called on non-object
npm ERR! at Function.keys (native)
npm ERR! at stripData (/usr/local/lib/node_modules/npm/lib/ search.js:89:28)
npm ERR! at Array.map (native)
npm ERR! at filter (/usr/local/lib/node_modules/npm/lib/search.js:73:6)
npm ERR! at /usr/local/lib/node_modules/npm/lib/search.js:63:21
npm ERR! at /usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/get.js:89:14
npm ERR! at Object.oncomplete (fs.js:107:15)
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 Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "yeoman-generator"
npm ERR! cwd /Users/XXXXXXXXXXXXXX
npm ERR! node -v v0.10.12
npm ERR! npm -v 1.2.32
npm ERR! type called_on_non_object
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/XXXXXXXXXXXXXX/npm-debug.log
npm ERR! not ok code 0
いつnpmをインストールしたのか?
意識してnpmをインストールした記憶は無かった。頑張って思い返したところ、以前yuidocを使うために、node.jsをインストールしたのだが、この「node.js」にnpmが含まれていたようである。
解決方法
ここの記事に、以下のコメントを載せている人がいた。
I was able to resolve this by running:
sudo npm update -g
Then deleting the package.json and re-running:
npm init
読むと、npm自身をアップデートすることで解消したとの事。試しに自分の端末で実行した所、私の環境下においては、npmバージョンが「1.2.32」から「1.4.23」にバージョンアップされ、無事に解決できた。
補足として
npmをバージョンアップして、最初にnpmを実行するとローカルインデックスを作成するようで、少し時間を必要とするようだった。
$ npm search yeoman-generator
npm WARN Building the local index for the first time, please be patient