Electron 应用中 fs 模块删除 asar 文件被占用的问题与解决

1,546次阅读
没有评论

共计 693 个字符,预计需要花费 2 分钟才能阅读完成。

提醒:本文最后更新于2025-07-07 14:39,文中所关联的信息可能已发生改变,请知悉!

在 Electron 中使用 fs 模块操作 .asar 格式文件,当执行删除操作时,很容易会遇到文件被占用的问题:

操作无法完成,因为文件已在 Electron 中打开

Electron 应用中 fs 模块删除 asar 文件被占用的问题与解决

这是因为 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!

正文完
 0
任侠
版权声明:本站原创文章,由 任侠 于2022-10-14发表,共计693字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码