[Node, npm] Missing write access to /usr/local/lib/node_modules でグローバルインストール(npm i -g)ができない時の対処法


はじめに

長年使ってきたMacbook-air mid2013に別れを告げて、新しいmacに移行して環境構築した際につまづいたのでメモ。同じく新しいPCで環境構築する人の役に立てれば!

エラー概要

新しいPCに移行して、とりあえずnodeのインストールだ!!と nodeの公式からインストーラをダウンロードしてインストール。

そのあと、firebaseを使いたかったので
npm i -g firebase-tools を実行すると以下のエラーが。

実際のターミナル画面

どうやらnpmが十分な権限を持っていないことが原因らしい。

Missing write access to /usr/local/lib/node_modules

原因

node,npm はnodeのバージョン管理ツール(nvmなど)経由でなく、インストーラー経由でインストールすると権限がlocal権限しか与えられないため。

だから、npm i -gでエラーを起こしてしまうらしい。

公式(https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) が堂々と書いていた。

対策

公式の指示に従って、nvmをインストールしてnodeをインストールすることにした。

nvmインストールコマンド(zsh用)
bashの人は末尾をbashhにしないと.bashrcに必要な記述が書き込まれないので書き換えが必要

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | zsh

実行後にsource ~/.zshrcを実行 or ターミナルを再起動する。

あとは以下などでお好みのnodeバージョンを指定してインストールすればOK

nvm install x.xx.xx

使えるバージョンの一覧確認は以下

nvm ls-remote

以上です。