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

相关推荐
jiang_bluetooth12 分钟前
AIC8800M40低功耗wifi在ARM-LINUX开发板上做OTA的调试经验
linux·arm开发·ota·sdio·aic8800·sdio wifi
添乱12 分钟前
「Linux命令基础」文本模式系统关闭与重启
linux
添乱21 分钟前
「Linux命令基础」Shell命令基础
linux
egoist202321 分钟前
【Linux仓库】命令行参数与环境变量【进程·伍】
linux·运维·服务器·环境变量·命令行参数·内建命令
ζั͡山 ั͡有扶苏 ั͡✾23 分钟前
CentOS/RHEL LVM 磁盘扩展完整教程
linux·运维·centos
kfepiza26 分钟前
NetworkManager配置网桥(bridge)虚拟网络(vlan) 笔记250711
linux·tcp/ip·ubuntu
Fireworkitte37 分钟前
Linux 中替换sed
linux·运维·服务器
dessler1 小时前
Kafka-日常运维命令
linux·运维·kafka
Brookty2 小时前
【操作系统】线程
java·linux·服务器·后端·学习·java-ee·操作系统
花嫁代二娃7 小时前
Linux:环境变量
linux