Chrome扩展中使用OPFS的createSyncAccessHandle报错求助
问题解答
Chrome扩展目前不支持createSyncAccessHandle()和createAccessHandle()这两个OPFS方法,这就是你调用时报错TypeError: fileHandle.createSyncAccessHandle is not a function的核心原因——哪怕你能正常使用createWritable()、getFile()等其他OPFS功能,这两个方法在扩展环境(包括服务工作线程、弹窗脚本)中并未开放权限。
替代实现方案
既然createWritable()和getFile()可正常工作,你可以用这两个方法满足文件读写需求:
写文件示例
const root = await navigator.storage.getDirectory(); const fileHandle = await root.getFileHandle('Untitled.txt', { create: true }); // 使用createWritable替代同步访问句柄 const writableStream = await fileHandle.createWritable(); await writableStream.write('测试扩展中的OPFS写入'); await writableStream.close();
读文件示例
const file = await fileHandle.getFile(); const fileContent = await file.text(); // 若需二进制数据可改用arrayBuffer() console.log(fileContent);
额外说明
如果你的业务场景对文件访问的同步性有强依赖(比如高性能IO场景),目前Chrome扩展平台没有对应的替代方案,只能等待Chrome官方更新扩展环境,开放这两个OPFS方法的支持。
内容的提问来源于stack exchange,提问作者John Jethro Rashbold
相关产品推荐
相关产品推荐

