如何在本地与服务器间复用Playwright浏览器上下文?
解决Playwright持久化上下文跨设备复用的Chromium锁定问题
这个错误是因为Chromium会为正在使用的配置文件生成锁定文件,防止多进程或跨设备同时访问导致数据损坏。你直接复制本地的browser_context目录时,这些锁定文件也被同步到了服务器,服务器上的Chromium检测到锁定标记后就会报错。
解决方法如下:
- 删除锁定文件:进入服务器上的browser_context目录,删除
SingletonLock、SingletonCookie、SingletonSocket这类锁定相关文件(不同操作系统下文件名可能略有差异),之后再启动Playwright。 - 复制前确保本地释放上下文:复制目录前必须关闭本地的Playwright实例,确保本地已经完全释放了对该上下文的锁定,避免复制时锁定文件处于活跃状态。
- 用官方推荐的状态同步方式替代目录复制:Playwright更推荐使用
storageState来导出/导入会话状态,而非直接复制整个上下文目录:- 本地导出状态:
await context.storageState({ path: 'storage.json' }) - 服务器导入状态:
const context = await browser.newContext({ storageState: 'storage.json' })
- 本地导出状态:
- 清理服务器残留进程:如果服务器上存在未正常退出的Chromium进程,先杀掉这些进程再启动,Linux系统可执行命令:
pkill -f chromium
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

