共计 693 个字符,预计需要花费 2 分钟才能阅读完成。
提醒:本文最后更新于2025-07-07 14:39,文中所关联的信息可能已发生改变,请知悉!
在 Electron 中使用 fs 模块操作 .asar
格式文件,当执行删除操作时,很容易会遇到文件被占用的问题:
操作无法完成,因为文件已在 Electron 中打开
这是因为 require('fs')
是被 Electron 重写了,读取 .asar
格式文件时会当做目录处理。使用 fs 对象的方法对 .asar
文件路径的读取,都会产生对 asar
目录的引用。如:
import fs from 'fs'; | |
const asarFile = 'test.asar'; | |
fs.existsSync(asarFile); // true | |
fs.rmSync(asarFile); // Failed! |
若想将 .asar
格式文件当做普通文件处理,则应使用 require('original-fs')
,它会返回未经重写的 fs 对象。
参考如下示例代码对比一下即可明白:
import fs from 'fs'; | |
import ofs from 'original-fs'; | |
const asarFile = 'test.asar'; | |
ofs.statSync(asarFile).isFile(); // true | |
fs.statSync(asarFile).isFile(); // false | |
fs.statSync(asarFile).isDirectory(); // true | |
所以当希望将 asar
文件当做普通文件处理时,应使用 original-fs
模块。示例:
import ofs from 'original-fs'; | |
const asarFile = 'test.asar'; | |
ofs.existsSync(asarFile); // true | |
ofs.rmSync(asarFile); // success! |
正文完