firebase deployコマンドを発行する時にエラーが発生する。

# firebase deploy

=== Deploying to 'testproj-b1d52'...

i  deploying database, functions, hosting
✔  database: rules ready to deploy.
i  functions: ensuring necessary APIs are enabled...
i  runtimeconfig: ensuring necessary APIs are enabled...
✔  runtimeconfig: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

Error: Error parsing triggers: Cannot find module 'lodash'

Try running "npm install" in your functions directory before deploying.

Having trouble? Try firebase deploy --help

どうやら、firebase functionsでモジュールが足りないようだ。


# cd functions/
# npm install

npm http 200 https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz
npm http 200 https://registry.npmjs.org/ms/-/ms-0.7.3.tgz
npm http 200 https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz
npm http 200 https://registry.npmjs.org/topo/-/topo-1.1.0.tgz
npm http 200 https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz
npm http 200 https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz
npm http 200 https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-7.2.0.tgz
npm http 200 https://registry.npmjs.org/@types/node/-/node-7.0.12.tgz
npm ERR! Error: Invalid name: "@types/jsonwebtoken"
npm ERR!     at ensureValidName (/usr/lib/node_modules/normalize-package-data/lib/fixer.js:281:15)
npm ERR!     at Object.module.exports.fixNameField (/usr/lib/node_modules/normalize-package-data/lib/fixer.js:196:5)
npm ERR!     at /usr/lib/node_modules/normalize-package-data/lib/normalize.js:29:38
npm ERR!     at Array.forEach (native)
npm ERR!     at normalize (/usr/lib/node_modules/normalize-package-data/lib/normalize.js:28:15)
npm ERR!     at final (/usr/lib/node_modules/read-package-json/read-json.js:310:33)
npm ERR!     at then (/usr/lib/node_modules/read-package-json/read-json.js:124:33)
npm ERR!     at /usr/lib/node_modules/read-package-json/read-json.js:234:40
npm ERR!     at fs.js:272:14
npm ERR!     at /usr/lib/node_modules/graceful-fs/graceful-fs.js:103:5
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 Linux 2.6.32-358.23.2.el6.x86_64
npm ERR! command "node" "/usr/bin/npm" "install"
npm ERR! cwd /var/www/html/itunesdb/firebase/functions
npm ERR! node -v v0.10.48
npm ERR! npm -v 1.3.6
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /var/www/html/itunesdb/firebase/functions/npm-debug.log
npm ERR! not ok code 0

npm ERR! Error: Invalid name: "@types/jsonwebtoken"

うーん、エラーが治らない。調べてみると、npmのバージョンが古いという記事があった。

you are using an outdated version of npm

よく見ると、この環境のnodeのバージョンはv0.10.48,npmのバージョンは1.3.6である。古すぎる。
Node.jsをCentOS6.7にインストールしてみた。 - ah-2
の手順で新しいバージョンのnodeやnpmをインストールしてみた。


# node --version
v6.10.3
# npm --version
3.10.10

これでやっとfirebase deployコマンドが正常に動作した。