Node.js fs.unlink函数导致EPERM错误

时间:2011-12-13 21:11:19

标签: node.js

我正在使用fs.unlink()删除文件,但收到以下错误:

uncaught undefined: 

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

任何人都知道为什么会发生这种情况?

4 个答案:

答案 0 :(得分:26)

您无法删除非空的目录。 并且fs.unlinkSync()用于删除文件而不是文件夹。

要删除空文件夹,请使用 fs.rmdir()

要删除非空文件夹,请使用以下代码段:

var deleteFolderRecursive = function(path) {
  if( fs.existsSync(path) ) {
      fs.readdirSync(path).forEach(function(file) {
        var curPath = path + "/" + file;
          if(fs.lstatSync(curPath).isDirectory()) { // recurse
              deleteFolderRecursive(curPath);
          } else { // delete file
              fs.unlinkSync(curPath);
          }
      });
      fs.rmdirSync(path);
    }
};
来自stackoverflow的

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

答案 1 :(得分:7)

如果你想实现像rm -rf那样的东西,那么npm中有一个名为rimraf的软件包,它非常容易。

答案 2 :(得分:1)

文件的路径可能是错误的。

如果没有,请尝试使用 fs.unlinkSync()

答案 3 :(得分:0)

是的,您无权删除/取消该文件的链接。再次尝试使用更多权限或验证您是否正确使用它。