npm / npx 実行時に発生する ENOTEMPTY エラーの解決方法
発生したエラー
npx 実行時に以下のようなエラーが出ることがあります。
npm error code ENOTEMPTY
npm error syscall rename
npm error path /home/USER/.npm/_npx/xxxx/node_modules/...
npm error dest /home/USER/.npm/_npx/xxxx/node_modules/.xxxx-xxxx
npm error errno -39
npm error ENOTEMPTY: directory not empty, rename ...
さらに MCP client for chrome-devtools failed to start: request timed out のように関連プロセスが起動できないケースもありました。
原因
-
npxが利用する一時ディレクトリ (~/.npm/_npx/) に壊れたキャッシュが残っており、
ディレクトリのリネームができなくなっている。 - その結果、パッケージの展開や実行が中途で失敗する。
解決方法
キャッシュを削除してクリーンな状態にすれば解決します。
# npx の一時キャッシュを削除
rm -rf ~/.npm/_npx
# npm キャッシュもクリア
npm cache clean --force
これで再度 npx パッケージ名 を実行すると正常に動作しました。
ポイント
-
ENOTEMPTYは「ディレクトリが空でないのでリネームできない」という意味。 - キャッシュ破損が原因なので、キャッシュを消すのが最短解決策。
- どうしても繰り返す場合は、対象パッケージを
npm install -gでグローバルに入れる方法もある。
まとめ
-
npx実行時のENOTEMPTY renameエラーはキャッシュ破損が原因。 -
rm -rf ~/.npm/_npx && npm cache clean --forceで解決可能。 - 再現しやすい環境ではグローバルインストールも検討するとよい。