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

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

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

任何人都知道这是为什么发生?

您不能删除非空的目录。 而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); } }; 

从stackoverflow片段: 是node.js rmdirrecursion? 它会在非空目录上工作吗?

如果你想实现像rm -rf这样的事情,那么npm里有一个叫做rimraf的包,这使得它非常容易。

也许文件path是错误的。

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

是的,您无权删除/取消链接该文件。 再次尝试更多的权利,或者validation你是否正确的path。