技術 · 實用指南
npm 在 rename 時顯示 ENOTEMPTY?刪除前先稽核 path 與 dest
保存完整錯誤、停止並行寫入,區分本機與全域安裝,並檢查精確目的目錄。只有證明它是殘留 staging 目錄後才窄幅移走,再重試一次並驗證 cache。

npm rename 階段的 ENOTEMPTY 指向 path 與 dest 間的一次移動失敗,並不證明整個 cache、lockfile 或 node_modules 都壞了。
先保存證據、停止並行寫入並判斷安裝範圍。只移走能證明是殘留的目的目錄,然後重試一次並驗證。
先保存精確 rename 證據
保存完整錯誤、Node/npm 版本、prefix、cwd 與 verbose log。
點號目的仍可能在使用或位於特殊 filesystem,不能直接刪除。
停止 writer 並分類
關閉 dev server、watcher 與其他 npm/npx 終端,確認無活動 process。
判斷 local、global、npx、container 或 mount,記錄 user 與 prefix。
移除前檢查 path 與 dest
查看 owner、timestamp 與 contents,共享 filesystem 先在 local disk 重現。
若 dest 確為同次失敗殘留且無獨有資料,只移走該 directory。
重試一次並驗證 cache
用相同 cwd、user、prefix 重試一次,成功後檢查 project 與 lockfile。
執行 npm cache verify;只有證據指向 cache corruption 才清理全部。
重複失敗就升級調查
新 dest 再失敗時檢查並行 installer、indexer、bind mount、network filesystem 與 ownership。
不要先用 sudo 或遞迴改 ownership;必要時在乾淨本機目錄重現並提交證據。
