‘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参数也必须 | |

相关推荐
2601_967987375 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li5 小时前
linux之数据链路层
linux·网络·智能路由器
GeW6 小时前
高端化走到深处,是数据库和Linux的事
linux
程序员初一7 小时前
Linux 远程桌面有四种做法
linux·ssh
程序开发阿元8 小时前
1C1G 能跑什么:把留常驻服务和不留摆进一张内存表
linux·ssh
xbzb10 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮10 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
独隅10 小时前
WebStorm Linux 版安装实战与核心效能展示
linux·ide·webstorm
雪落漂泊12 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
AR-26710-13 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维