こんにちは、かつコーチです。
今回はNode.jsのupdateについてです。
普段はあまり意識することがないのですが、updateするときに躓くところだったので、備忘録として残します。
【Mac】Node.js/npmのアップデートで発生したエラーと解決策まとめ
Mac環境で Node.js および npm をアップデートしようとした際に発生した一連のエラーと、最終的な解決にいたるまでの手順の備忘録です。
1. npm update -g npm で権限エラー(EACCES)が発生
状況
npm update -g npm を実行したところ、以下のエラーが発生して失敗。
bash
npm error code EACCES
npm error syscall rename
npm error path /usr/local/lib/node_modules/npm
...
npm error It is likely you do not have the permissions to access this file as the current user
コードは注意してご使用ください。
原因
システム共有領域(/usr/local/lib/node_modules)を書き換えるための管理者権限が不足していたため。
対策
コマンドの先頭に sudo を付与して実行することで、npm自体のアップデートは成功しました。
bash
sudo npm update -g npm
コードは注意してご使用ください。
※ EBADENGINE の警告(古いパッケージがNodeの新しいバージョンに対応していない旨)が出ることがありますが、動作自体には問題ないため無視して進めてOK。
2. node -v のバージョンが変わらない(勘違いの解消)
状況
npmのアップデートは成功したものの、node -v を叩いてもバージョンが古いまま(v22.11.0)変わらなかった。
原因
npm update はパッケージ管理ツールである npm 自体を更新するコマンドであり、Node.js(node)本体のバージョンは更新されないため。Node.js本体は別途アップデートが必要。
3. Homebrewでのアップデート時にXcodeのライセンスエラー
状況
Homebrew経由でNode.jsをアップデートしようとしたところ、以下のエラーが発生。
bash
Error: You have not agreed to the Xcode license. Please resolve this by running:
sudo xcodebuild -license accept
コードは注意してご使用ください。
原因
macOSのアップデートやツールの更新に伴い、Xcode(開発ツール)の利用規約への同意が外れていたため。
対策
指示通り以下のコマンドを実行し、パスワードを入力して規約に同意しました。
bash
sudo xcodebuild -license accept
コードは注意してご使用ください。
4. Error: node not installed でHomebrewのアップデートが失敗
状況
規約同意後、brew upgrade node を実行したところ、以下のエラーが発生。
bash
Error: node not installed
コードは注意してご使用ください。
原因
現在パソコンに入っているNode.jsが、Homebrew経由ではなく「公式サイトのインストーラー」等から直接インストールされたものだったため。Homebrewの管理対象外になっていた。
5. 【最終解決】公式サイトからの上書きインストール
対策
Homebrewでの管理を諦め、元々のインストール元である公式サイトから直接最新版を上書きするのが一番安全と判断。
- Node.js 公式サイト にアクセス。
- 推奨版(LTS)のインストーラーをダウンロード。
- 画面の指示に従ってインストールを完了。
- ターミナルを再起動して
node -vを実行し、無事に最新バージョンへ更新されていることを確認!
💡 まとめと今後の対策
npmのグローバル更新でエラーが出たらsudoを疑う。npmとnodeのアップデートは別物。- Homebrewで「インストールされていない」と言われたら、公式サイトからの直接インストールの可能性が高い(その場合は公式サイトから上書きするのが手っ取り早い)。
- 将来的に複数バージョンを切り替えたり、権限エラーを完全に回避したい場合は、
fnmやnvmなどのNode.jsバージョン管理ツールの導入を検討するのがベスト。
