‘Target closed‘ error in Puppeteer解决

背景

业务应用需要将系统从centos切换ubuntu,其中A应用在准备好相应的ubuntu镜像后,在mac本机启容器,执行测试脚本报错

复制代码
"Error: Protocol error (Target.setDiscoverTargets): Target closed."

排查

1.看Chromium 错误日志

添加dumpio: true,这会把 Chromium 启动过程的 stderr 输出都打到控制台

复制代码
const browser = await puppeteer.launch({
  headless: true,
  args: [...],
  dumpio: true
});

2.执行后,关键报错如下

复制代码
[0612/162451.208800:FATAL:zygote_main_linux.cc(163)] Check failed: sandbox::ThreadHelpers::IsSingleThreaded().
[0612/162451.595965:ERROR:file_path_watcher_linux.cc(318)] inotify_init() failed: Function not implemented (38)
qemu: unknown option 'type=gpu-process'

DevTools listening on ws://127.0.0.1:33643/devtools/browser/cab2bfec-926e-4e7b-b53e-46157b3a6032
[0612/162451.770694:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 1 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.831737:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 2 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.861199:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 3 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.874366:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 4 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.884288:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 5 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.893254:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 6 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.908820:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 7 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.936704:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 8 time(s)
qemu: unknown option 'type=gpu-process'
[0612/162451.995340:WARNING:gpu_process_host.cc(1206)] The GPU process has crashed 9 time(s)
[0612/162451.995588:FATAL:gpu_data_manager_impl_private.cc(918)] The display compositor is frequently crashing. Goodbye.

(node:499) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Protocol error (Target.setDiscoverTargets): Target closed.
(node:499) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

3.根据报错关键字搜索查到类似issue(https://github.com/puppeteer/puppeteer/issues/7746),提供的解决方案有两种

|---|-------------------------------------------------------------------------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | 方案 | 测试结果 | 引申 |
| 1 | Docker desktop启用beta功能:'Use Rosetta for x86/amd64 emulation on Apple Silicon' | mac机系统版本不满足,无法测试 | 1.Rosetta 2介绍 2.ARM 和 x86_64是什么关系 |
| 2 | chromium args参数增加--single-process | 1.经测试,该方案可行 2.--no-sandbox参数也必须 | |

相关推荐
风曦Kisaki21 分钟前
# Linux实战笔记-HIS项目实战Day01:版本控制与Git基础
linux·笔记·git
jsons11 小时前
rocky8内网离线批量补丁(你之前搭建的架构,多台服务器首选,无订阅)
linux·运维·服务器
阿拉斯攀登2 小时前
SPI 设备驱动开发
linux·驱动开发·嵌入式硬件·linux内核·嵌入式·linux驱动·spi
阿拉斯攀登2 小时前
定时器与延时:内核定时器、hrtimer 与延时函数
linux·嵌入式硬件·linux内核·嵌入式·linux驱动
zhou135284822672 小时前
Windows 配置 WSL (Ubuntu) 环境完整指南
linux·windows·ubuntu
FREEDOM_X2 小时前
Linux 进程间通讯(IPC)——总结
linux·c语言·前端·嵌入式硬件·struts
天空'之城2 小时前
Linux 系统编程 17:零拷贝技术全解
linux·嵌入式·零拷贝技术全解
网络小白不怕黑3 小时前
11.虚拟机模拟路由器实验
linux·运维·服务器·网络
Mapleay3 小时前
Linux 内核编程基础
linux·运维·服务器
sg_knight4 小时前
Claude Code 安装指南(macOS / Linux / Windows WSL)
linux·windows·macos·claude·code·anthropic·claude-code