chokidar.watch 如何忽略文件?ignored无效?
这是之前问题的升级版:https://segmentfault.com/q/1010000044101528
最后发现报错的是chokidar
chokidar.watch(dirPath, {
persistent: true, // 保护进程不退出持久监听,默认值为true
// 完全无效
ignored: ["**/node_modules/**", "**/.git/**", "**/pagefile.sys"], // 忽略文件
// ignored: path => ["node_modules", ".git", "pagefile.sys"].some(s => path.includes(s)),
cwd: ".", // 表示当前目录
depth: 0, // 只监听当前目录不包括子目录
})
报错信息:
[Window Title]
Error
[Main Instruction]
A JavaScript error occurred in the main process
[Content]
Uncaught Exception:
Error: EBUSY: resource busy or locked, lstat 'c:\pagefile.sys'
[确定]
我要做一个类似资源管理器的列表,所以排除某文件的方式是最后的无奈之举
所以会有监听磁盘根目录的需求,但不少文件是被占用的,比如pagefile.sys,这是系统的分页文件,我们不能对它做任何处理。
我需要得到的文件信息有:
- 文件名
- 后缀
- 大小
- 创建时间
- 修改时间
大小、时间不要求实时,都是排序用的
但如上所述,会报EBUSY错误。fs.statSync也会报此类错误。
我不关心文件内容,请问有解决方法吗?
不要求用chokidar,欢迎推荐更好用的库。
回复
1个回答
test
2024-06-29
用正则:
chokidar.watch(dirPath, {
ignored: /node_modules|\.git|pagefile\.sys/,
//...
});
或者用绝对路径;
ignored: ["C:/node_modules/**", "C:/.git/**", "C:/pagefile.sys"],
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容