我正在使用fs.unlink()
删除文件,但收到以下错误:
uncaught undefined:
Error: EPERM, Operation not permitted '/Path/To/File'
任何人都知道为什么会发生这种情况?
答案 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)
是的,您无权删除/取消该文件的链接。再次尝试使用更多权限或验证您是否正确使用它。