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

Mar*_*yen 13 node.js

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

uncaught undefined: 

Error: EPERM, Operation not permitted '/Path/To/File'
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会这样吗?

Rag*_*dra 27

您无法删除非空目录.并且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);
    }
};
Run Code Online (Sandbox Code Playgroud)

来自stackoverflow的片段:node.js rmdir是递归的吗?它会在非空目录上工作吗?


Dav*_*Lin 7

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


the*_*ejh -3

是的,您无权删除/取消链接该文件。使用更多权限重试或验证您是否为其提供了正确的路径。