共享主机部署Puppeteer报错:缺失libatk-bridge-2.0如何解决?
解决共享主机上Puppeteer缺失libatk-bridge-2.0.so.0的问题
由于共享主机无root权限,无法通过系统包管理器安装依赖,可尝试以下无需权限的解决方案:
方案1:手动下载依赖库并指定加载路径
- 获取对应架构的libatk-bridge-2.0包
根据主机系统架构(如amd64),从Debian/Ubuntu官方镜像源下载libatk-bridge2.0-0的deb包。 - 解压到用户私有目录
创建本地存储目录并解压deb包:mkdir -p ~/local dpkg -x [你的deb包文件名].deb ~/local - 启动Puppeteer时指定库路径
修改代码,设置环境变量让Chromium找到私有库:const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'], // 共享主机必填参数 env: { ...process.env, LD_LIBRARY_PATH: `${process.env.HOME}/local/usr/lib/x86_64-linux-gnu:${process.env.LD_LIBRARY_PATH || ''}` } }); // 业务代码逻辑 await browser.close(); })();
方案2:使用静态编译版Chromium
静态编译的Chromium不依赖系统共享库,可直接运行:
- 下载兼容版本的静态Chromium
选择与你的Puppeteer版本兼容的静态编译Chromium,解压到用户目录(如~/chromium-static)。 - 指定路径启动Puppeteer
修改代码指向静态Chromium:const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ executablePath: `${process.env.HOME}/chromium-static/chrome`, args: ['--no-sandbox', '--disable-setuid-sandbox'] }); // 业务代码逻辑 await browser.close(); })();
补充提示
- 共享主机必须添加
--no-sandbox和--disable-setuid-sandbox参数,否则Chromium无法启动。 - 若仍提示缺失其他库,重复方案1的步骤,下载对应依赖包并添加到
LD_LIBRARY_PATH即可。
内容的提问来源于stack exchange,提问作者nabilkrs
相关产品推荐
相关产品推荐

