npm i -g firebase-toolsを実行したら「ENOTEMPTY: directory not empty~~」というエラーが出た件

firebase-toolsをアップデートしたくて

npm install -g firebase-toolsを実行した時、エラーが出たのでその解決方法を共有いたします。

結論

私の場合、下記の手順で解決しました。

手順
  1. /Users/[USERNAME]/.npm-global/lib/node_modulesにある[firebase-tools]のフォルダを削除
  2. [ npm i -g firebase-tools ]を実行
  3. [ chmod +x /Users/[USERNAME]/.npm-global/bin/firebase ]を実行
  4. [ sudo /Users/[USERNAME]/.npm-global/bin/firebase ]を実行

事象

実行コマンド

npm install -g firebase-tools

エラー文章

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
npm ERR! code ENOTEMPTY
npm ERR! syscall rename
npm ERR! path /Users/[USERNAME]/.npm-global/lib/node_modules/firebase-tools
npm ERR! dest /Users/[USERNAME]/.npm-global/lib/node_modules/.firebase-tools-JiEiocId
npm ERR! errno -66
npm ERR! ENOTEMPTY: directory not empty, rename '/Users/[USERNAME]/.npm-global/lib/node_modules/firebase-tools' -> '/Users/teppeitakagi/.npm-global/lib/node_modules/.firebase-tools-JiEiocId'

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/[USERNAME]/.npm/_logs/2023-11-28T14_33_54_307Z-debug-0.log

ワーニング/エラー解析

npm WARN config global という部分について

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

–global または –local オプションの使用が非推奨であることを警告しており、代わりに –location=global を使用することを推奨しています。

そのため、下記のようにすればこの警告は表示されないです!

npm install --location=global firebase-tools

ERR! code ENOTEMPTY という部分について

npm ERR! code ENOTEMPTY
npm ERR! syscall rename
npm ERR! path /Users/[USERNAME]/.npm-global/lib/node_modules/firebase-tools
npm ERR! dest /Users/[USERNAME]/.npm-global/lib/node_modules/.firebase-tools-JiEiocId
npm ERR! errno -66
npm ERR! ENOTEMPTY: directory not empty, rename '/Users/[USERNAME]/.npm-global/lib/node_modules/firebase-tools' -> '/Users/[USERNAME]/.npm-global/lib/node_modules/.firebase-tools-JiEiocId'

firebase-tools パッケージを更新またはインストールしようとした際に、ディレクトリが空でないために発生したエラーを示しています。具体的には、/Users/[USERNAME]/.npm-global/lib/node_modules/firebase-tools から /Users/[USERNAME]/.npm-global/lib/node_modules/.firebase-tools-JiEiocId へのリネーム(名前変更)が、ディレクトリが空でないために失敗しています。

A complete log of this run can be found の部分について

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/[USERNAME]/.npm/_logs/2023-11-28T14_33_54_307Z-debug-0.log

ログがまとめられている

firebase-toolsを再インストール

firebase-toolsのフォルダを削除

/Users/[USERNAME]/.npm-global/lib/node_modulesにある

firebase-toolsのフォルダを一時的にデスクトップに移動させる

firebase-toolsをインストール

npm i -g firebase-tools

を実行

firebaseのバージョン確認

firebase --version

を実行

実行結果

bash: /Users/[USERNAME]/.npm-global/bin/firebase: Permission denied

エラー発生

これは、権限がないというエラーです。

bash: /Users/[USERNAME]/.npm-global/bin/firebase: Permission denied の解決方法

3つの解決方法

1.sudoを使用する

コマンドの前に sudo を付けて実行します。これにより、管理者権限でコマンドを実行できます。コマンドは次のようになります:

sudo /Users/[USERNAME]/.npm-global/bin/firebase

この方法を使用する際は、管理者権限でコマンドを実行することのリスクを理解しておくことが重要です。

2.権限を変更する

ファイルの権限を変更して、実行可能にすることができます。次のコマンドで権限を変更できます:

chmod +x /Users/[USERNAME]/.npm-global/bin/firebase

このコマンドは、firebase コマンドに実行権限を付与します。

3.パスを変更する

システムのパスにFirebase CLIのパスを追加することで、直接フルパスを使用せずに firebase コマンドを実行できるようになります。これを行うには、シェルの設定ファイル(例えば .bashrc や .zshrc)に以下の行を追加します:

export PATH=$PATH:/Users/[USERNAME]/.npm-global/bin

この変更を適用した後、シェルを再起動するか、設定ファイルを再読み込みする必要があります(例:source ~/.bashrc)。

私の解決方法

chmod +x /Users/[USERNAME]/.npm-global/bin/firebase

を実行

sudo /Users/[USERNAME]/.npm-global/bin/firebase

実行

バージョン確認

firebase --version

を実行

実行結果

12.9.1

まとめ

以上、ファイルを削除して再インストールをすることで解決できました。

最後に

最後まで読んでいただきありがとうございます。

開発する時、エラーが出ると不安になりますよね。そんな時は、落ち着いてエラーをちょっとずつ見ると原因がわかってきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA