错误:无法启动浏览器进程p

时间:2020-01-30 04:42:09

标签: node.js puppeteer

检查失败 crashForExceptionInNonABIComplianceCodeRange 函数下方的代码是创建PDF文件

   (async function() {

      try {

      const browser = await puppeteer.launch();
      const page = await browser.newPage();

      await page.setContent(pdfOutput);
      await page.emulateMedia("screen");
      await page.pdf({
        path: "routes/planiton/pdf/mypdf.pdf",
        format: "A4",
        printBackground: true
      });

      console.log('done');
      await browser.close();
      //process.exit();

    } catch (e) {
      console.log("Our Error", e)
    }
  })();

16 个答案:

答案 0 :(得分:10)

我遇到了同样的问题,我尝试了Puppeteer guide中列出的所有内容,但没有一个适合我。

对我有用的是手动sudo apt-get install chromium-browser下载铬。

然后,告诉Puppeteer铬的位置:

const browser = await puppeteer.launch({
  executablePath: '/usr/bin/chromium-browser'
})

希望这会对某人有所帮助:)

答案 1 :(得分:4)

如果无法启动浏览器进程 可能您没有安装铬

sudo apt-get install chromium-browser

然后是setting up

答案 2 :(得分:4)

const browser = await puppeteer.launch({
    headless:false,
    args: ["--no-sandbox"]
});

安装puppeteer和puppeteer-core。

答案 3 :(得分:4)

在Debian 9.5上,我遇到了相同的问题

Error: Failed to launch the browser process! spawn /home/user/PuppeteerTests/node_modules/puppeteer/.local-chromium/linux-737027/chrome-linux/chrome ENOENT

所以我首先进入node_modules/puppeteer/.local-chromium/linux-737027/,发现了一个名为chrome-linux.zip的zip文件,其中包含名为chrome-linux的文件夹。

然后,我在chrome-linux中进入了一个更深的目录,仅找到libGLESv2.so

因此,我将zip文件中的chrome-linux目录保存到node_modules/puppeteer/.local-chromium/linux-737027/中(因此删除了旧目录)。

然后我尝试了example from Google

const puppeteer = require('puppeteer');

 (async() => {
 const browser = await puppeteer.launch();
 console.log(await browser.version());
 await browser.close();
 })();

产生于

Error: Failed to launch the browser process!
[0424/110706.119517:FATAL:zygote_host_impl_linux.cc(116)] No usable sandbox! Update your kernel or see https://chromium.googlesource.com/chromium/src/+/master/docs/linux/suid_sandbox_development.md for more information on developing with the SUID sandbox. If you want to live dangerously and need an immediate workaround, you can try using --no-sandbox.

最后Puppeteer guide之后,我启用了user namespace cloning以使沙箱正常工作:

sudo sysctl -w kernel.unprivileged_userns_clone=1

再次尝试了相同的示例。

答案 4 :(得分:4)

apt-get install chromium-browser

尝试使用此命令,您仍然会遇到任何错误。

然后安装一些不完整的os包。对于我安装的 Ubuntu:

sudo apt-get install 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

答案 5 :(得分:4)

似乎每个人都有不同的解决方案。这些都不适合我,但我最终在 Ubuntu 20.04 上使用了这个:

  const browser = await puppeteer.launch({
    args: ["--no-sandbox", "--disabled-setupid-sandbox"],
  });

答案 6 :(得分:3)

我在Mac上遇到了问题-我正在

Failed to launch the browser process! spawn /PATH/TO/node_modules/puppeteer/ \
.local-chromium/mac-756035/chrome-mac/Chromium.app/Contents/MacOS/Chromium \
ENOENT

最后,问题是铬拉链没有正确解压。我进入node_modules / puppeteer / .local-chromium,在其中找到了zip,手动解压缩,然后将其复制到了mac-756035 / chrome-mac / Chromium.app / Contents / MacOS /中。然后它按预期工作

答案 7 :(得分:2)

const browser = await puppeteer.launch({ignoreDefaultArgs: ['--disable-extensions']});

答案 8 :(得分:2)

我遇到了同样的问题,那里的专家会告诉你很多事情。只需添加

const browser = await puppeteer.launch({headless: false}); // default is true

答案 9 :(得分:2)

对我有用的唯一方法(我在 windows 上使用 wsl)是像这样设置 args 配置:

const browser = await puppeteer.launch({
    args: [
        '--disable-gpu',
        '--disable-dev-shm-usage',
        '--disable-setuid-sandbox',
        '--no-first-run',
        '--no-sandbox',
        '--no-zygote',
        '--single-process',
    ]
});

答案 10 :(得分:2)

有时您的 userDataDir 可能已被其他测试或代码污染。 只需尝试重命名即可。

 const browser = await puppeteer.launch({
    headless: false,
    userDataDir: "./user_data2",

  
  });

答案 11 :(得分:1)

遵循https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md的官方帮助, 就我而言,我已经为cent Os 7安装了所有依赖项,然后一切正常

答案 12 :(得分:1)

-在 Linux (Ubuntu)V20 上 -使用节点 v12.X -使用Puppeteer-core v10.0.0

https://pptr.dev/#?product=Puppeteer&version=v10.0.0&show=api-class-browserfetcher https://openbase.com/js/puppeteer-core/versions#10.0.0 -- 用于 r[版本]

puppeteer = require('puppeteer-core');
// console.log('TRYING TO FETCH BROWSER')
const browserFetcher = puppeteer.createBrowserFetcher();
let revisionInfo = await browserFetcher.download('884014');


browser = await puppeteer.launch(
  {
    executablePath: revisionInfo.executablePath,
    args: ['--no-sandbox', "--disabled-setupid-sandbox"]
  }
)

如果您以 Root 身份运行并且没有设置 --no-sandbox 标志,您可能会在服务器上遇到错误

如果你得到如下错误:

<块引用>

/home/[xxx]/[xxx]/node_modules/puppeteer[-core]/.local-chromium/linux-[xxx]/chrome-linux/chrome:加载共享库时出错:xxxx-xxxx.xx .x: 无法打开共享对象文件:没有那个文件或目录

在你的 shell 上,cd 到 /home/[xxx]/[xxx]/node_modules/puppeteer[-core]/.local-chromium/linux-[xxx]/chrome-linux/chrome, 检查缺少的依赖项 => ldd chrome | grep 不是

如果你得到一个列表然后运行以下命令 apt-get 升级

apt-get install 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

apt-get install -y libgbm-dev
apt-get install libglib2.0-0

如果依赖项消失了,那么你的 puppeteer 应该可以正常工作

答案 13 :(得分:1)

如果您尝试使用 { headless: false } 选项从 ssh 控制台运行 puppeteer,也会发生此错误。

答案 14 :(得分:0)

在启动 puppeteer 之前执行下一行:

sudo apt-get update
sudo apt-get install -y libgbm-dev
sudo apt 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

然后执行 npm start (或任何你有的),然后就可以工作了。

答案 15 :(得分:0)

对于 windows 用户,请按照以下步骤操作:

-在此处下载铬 https://download-chromium.appspot.com/

-解压文件

-in node_modules/puppeteer/.local-chrominium/win64-869685/ ,用你下载的那个替换chrome-win文件。