//删除文件夹
function delDir(path){
var files = [];
if(fs.existsSync(path)){
files = fs.readdirSync(path);
files.forEach((file, index) => {
var curPath = path + "/" + file;
if(fs.statSync(curPath).isDirectory()){
delDir(curPath); //递归删除文件夹
} else {
try {
fs.unlinkSync(curPath); //删除文件
} catch (error) {
console.log("删除出错:"+curPath);
}
}
});
try {
fs.rmdirSync(path);
} catch (error) {
console.log("删除出错:"+path);
}
}
}
使用以上函数删除文件夹总是报错,很随机的,几天偶尔报一次,不知道什么原因,哪位大神帮忙看下,报错在fs.statSync的位置。
Error: EPERM: operation not permitted, stat 'D:/wwwroot/make/public_html/muban/app/data/files/make-1641644430211-8611702404657482.jpg'
at Object.statSync (fs.js:1131:3)
at D:\wwwroot\make\node\makehtmlexe\index.js:34:19
at Array.forEach (<anonymous>)
at delDir (D:\wwwroot\make\node\makehtmlexe\index.js:32:15)
at IncomingMessage.<anonymous> (D:\wwwroot\make\node\makehtmlexe\index.js:572:7)
at IncomingMessage.emit (events.js:412:35)
at endReadableNT (internal/streams/readable.js:1334:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
errno: -4048,
syscall: 'stat',
code: 'EPERM',
path: 'D:/wwwroot/make/public_html/muban/app/data/files/make-1641644430211-8611702404657482.jpg'
}
文件都是正常的jpg文件,报错后,再删再测试却又是正常的,不测试,又偶尔会出现一次,搞不懂哪里问题。
nodejs用的v14.18.1
2022-1-26:已找到问题原因,下载jpg时使用fs.createWriteStream创建了个0kb的文件,如果jpg下载失败,这个jpg将一直处于占用状态,是自己疏忽的原因,感谢各位大佬的解答!
看这个报错是提示权限的问题
1:你运行node index.js 的时候使用的管理员的权限操作的吗?
2:执行程序的时候,操作的那个图片有没有被其他程序占用或者你有另外的一个程序也正在执行删除操作。