firebase-toolsをアップデートしたくて
npm install -g firebase-toolsを実行した時、エラーが出たのでその解決方法を共有いたします。
結論
私の場合、下記の手順で解決しました。
- /Users/[USERNAME]/.npm-global/lib/node_modulesにある[firebase-tools]のフォルダを削除
- [ npm i -g firebase-tools ]を実行
- [ chmod +x /Users/[USERNAME]/.npm-global/bin/firebase ]を実行
- [ 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 `--global`, `--local` are deprecated. Use `--location=global` instead.
–global または –local オプションの使用が非推奨であることを警告しており、代わりに –location=global を使用することを推奨しています。
そのため、下記のようにすればこの警告は表示されないです!
npm install --location=global firebase-tools
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 へのリネーム(名前変更)が、ディレクトリが空でないために失敗しています。
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を再インストール
/Users/[USERNAME]/.npm-global/lib/node_modulesにある
firebase-toolsのフォルダを一時的にデスクトップに移動させる
npm i -g firebase-tools
を実行
firebase --version
を実行
bash: /Users/[USERNAME]/.npm-global/bin/firebase: Permission denied
エラー発生
これは、権限がないというエラーです。
bash: /Users/[USERNAME]/.npm-global/bin/firebase: Permission denied の解決方法
コマンドの前に sudo を付けて実行します。これにより、管理者権限でコマンドを実行できます。コマンドは次のようになります:
sudo /Users/[USERNAME]/.npm-global/bin/firebase
この方法を使用する際は、管理者権限でコマンドを実行することのリスクを理解しておくことが重要です。
ファイルの権限を変更して、実行可能にすることができます。次のコマンドで権限を変更できます:
chmod +x /Users/[USERNAME]/.npm-global/bin/firebase
このコマンドは、firebase コマンドに実行権限を付与します。
システムのパスに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
まとめ
以上、ファイルを削除して再インストールをすることで解決できました。
最後に
最後まで読んでいただきありがとうございます。
開発する時、エラーが出ると不安になりますよね。そんな時は、落ち着いてエラーをちょっとずつ見ると原因がわかってきます。