【问题标题】:puppeteer not working on vps but running locallypuppeteer 不在 vps 上工作,但在本地运行
【发布时间】:2021-01-29 08:48:03
【问题描述】:

我写了一个小木偶程序,让我可以登录 twitter 并检查一些东西。在本地 mac OS Catalina 上,它可以工作,但在 VPS ubuntu 18.04 lts 上不工作。并在开始时向我显示日志:

/root/retwiter/node_modules/puppeteer/.local-chromium/linux-800071/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

我有 2 个正在运行的浏览器配置: 本地:

{
    headless: false,
    defaultViewport: null,
    args: [
        '--window-size=1920,1080'
    ]
}

vps:

{
    headless: true,
    defaultViewport: null,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ]
}

【问题讨论】:

标签: node.js puppeteer vps


【解决方案1】:

我认为您缺少库 libnss3 ,尝试使用安装它

sudo apt-get install libnss3-dev

如果这还不够,请为 puppeteer 安装所有的 deps

sudo apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev

【讨论】:

  • 是的,我做到了,但现在我遇到了这个问题/root/retwiter/node_modules/puppeteer/.local-chromium/linux-800071/chrome-linux/chrome: error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory 但我什至无法安装它
  • 尝试安装这个 sudo apt-get install libnspr4 libnss3 libnss3-nssdb libnss3-tools puppeter 在后台有很多 deps 这就是为什么
  • 如果这不起作用从 pupette docs 安装 deps:sudo apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
  • 我已经通过运行程序并一一安装丢失的软件包来修复它,现在它可以工作了。谢谢
  • 就我而言,我需要安装这些软件包: sudo apt install libnss3 sudo apt-get install libatk1.0-0 sudo apt-get install libatk-bridge2.0-0 sudo apt-get install libx11 -xcb1 sudo apt-get install libxcb-dri3-0 sudo apt-get install libxcomposite1 sudo apt-get install libxdamage1 sudo apt-get install libxfixes3 sudo apt-get install libcups2 sudo apt-get install libdrm2 sudo apt-get install libxrandr2 sudo apt -get install libgbm1 sudo apt-get install libasound2 sudo apt-get install libpangocairo-1.0-0 sudo apt-get install libgtk-3-0
【解决方案2】:

您可以将 AWS Elastic Beanstalk 配置文件 (.ebextensions) 添加到 Web 应用程序的源代码中,以配置您的环境并自定义其中包含的 AWS 资源。

在我们的例子中,如果我们不启用 EPEL 并且如果我们继续安装 Chromium 作为 npm install 的一部分,Puppeteer 将无法启动 Chromium,因为 libatk-1.0.so.0 不可用。

修补程序

将以下内容添加到您的应用根目录:

  1. 创建一个.npmrc 文件。
  2. 将以下内容添加到您的 .npmrc 文件中:
unsafe-perm=true

.npmrc 文件定义了 npm 在运行命令时的行为方式。将unsafe-perm 设置为true 会在运行包脚本时抑制UID/GID 切换。设置 unsafe-perm 标志以使用 root 权限运行脚本。

  1. 创建一个.ebextensions 文件夹。
  2. .ebextensions 文件夹中,创建一个01_enableEPEL.config 文件并添加以下内容。
commands:
  01_enableEPEL:
    command: sudo amazon-linux-extras install epel -y
  1. .ebextensions 文件夹中,创建一个02_installEPELPackages.config 文件并添加以下内容
packages:
  yum:
    chromium: []

你可以在我的 GitHub 上查看相同的指南@https://github.com/amarinediary/Marionette

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2018-03-17
    • 2022-01-20
    • 2023-02-09
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多