Watch at Ease看見世界,讀懂生活。

技術 · 實用指南

npm 在 rename 時顯示 ENOTEMPTY?刪除前先稽核 path 與 dest

保存完整錯誤、停止並行寫入,區分本機與全域安裝,並檢查精確目的目錄。只有證明它是殘留 staging 目錄後才窄幅移走,再重試一次並驗證 cache。

原創流程圖,展示 npm ENOTEMPTY 的 log、writer、scope 與 dest 稽核。
原創插畫:path 與 dest 定義 rename 失敗邊界。 Watch at Ease

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;必要時在乾淨本機目錄重現並提交證據。

原創流程圖,展示窄幅移走殘留目錄、重試與驗證。
原創插畫:只做最小可證明修復。 Watch at Ease