Google App Engine部署Puppeteer报libnss3.so找不到错误如何解决?
error while loading shared libraries: libnss3.so cannot open shared object file
这个报错是因为Puppeteer内置的Chromium浏览器运行所需的系统依赖库libnss3未在Google App Engine的运行环境中预装,按以下步骤操作即可解决:
解决步骤
- 切换到App Engine灵活环境
App Engine标准环境的Node.js运行时无法自定义安装系统依赖,必须切换为灵活环境,修改项目根目录下的app.yaml配置,将env字段设置为flex。 - 配置系统依赖安装规则
在app.yaml中新增runtime_config字段,声明Chromium运行需要的全部系统依赖,避免后续出现其他库缺失报错:runtime: nodejs env: flex runtime_config: operating_system: ubuntu22 packages: - libnss3 - libgconf-2-4 - libxss1 - libappindicator1 - libasound2 - libpangocairo-1.0-0 - libx11-xcb1 - libxcb-dri3-0 - libxtst6 # 保留你原有配置的其他字段,比如实例规格、环境变量等 - 修改Puppeteer启动参数
服务器无图形界面环境下启动Puppeteer必须添加适配参数,否则会启动失败,示例代码:
其中const browser = await require('puppeteer').launch({ args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu' ], headless: 'new' })--no-sandbox和--disable-setuid-sandbox是Google App Engine环境下的必填参数。 - 重新部署应用
执行gcloud app deploy命令重新部署,部署过程中平台会自动安装你配置的所有系统依赖包。
验证
部署完成后触发一次Puppeteer启动逻辑,确认没有库缺失报错、Chromium可以正常启动即可。
内容的提问来源于stack exchange,提问作者user17399782
相关产品推荐
相关产品推荐

