2011-12-13 176 views
10

我使用fs.unlink()刪除一個文件,我收到以下錯誤:Node.js的fs.unlink功能使EPERM錯誤

uncaught undefined: 

Error: EPERM, Operation not permitted '/Path/To/File' 

人知道爲什麼會這樣?

+0

檢查您的錯誤信息?!嘗試對運行該進程的用戶執行相同操作。 (即:/> unlink/path/To/file) – malletjo 2011-12-13 22:22:13

回答

0

是的,您沒有刪除/取消鏈接該文件的權限。再次嘗試擁有更多權利,或者驗證您是否正確選擇了正確的路徑。

22

您不能刪除非空的目錄。 而fs.unlinkSync()用於刪除文件而不是文件夾。

要刪除一個空文件夾,使用 fs.rmdir()

刪除一個非空文件夾,使用此片段:

從計算器
var deleteFolderRecursive = function(path) { 
    if(fs.existsSync(path)) { 
     fs.readdirSync(path).forEach(function(file) { 
     var curPath = path + "/" + file; 
      if(fs.statSync(curPath).isDirectory()) { // recurse 
       deleteFolderRecursive(curPath); 
      } else { // delete file 
       fs.unlinkSync(curPath); 
      } 
     }); 
     fs.rmdirSync(path); 
    } 
}; 

段:Is node.js rmdir recursive ? Will it work on non empty directories?

+0

通過在應用程序使用它時更新npm模塊來獲得相同的錯誤!謝謝。 – Vadorequest 2014-04-26 15:55:37

6

如果您想要實現像rm -rf這樣的東西,npm中有一個叫做rimraf的包,這很容易。

1

也許路徑的文件位於erroneus。

如果不是,請嘗試使用fs.unlinkSync()