如何修复“无法启动Chrome!”

时间:2019-07-11 20:57:08

标签: node.js puppeteer ubuntu-18.04

我正在尝试使用puppeteer对网站进行查询,但出现错误:

Error: Failed to launch chrome!
[0711/174138.253701:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

我试图给以下参数

puppeteer.launch(args: ['--disable-setuid-sandbox'])
puppeteer.launch(args: ['--no-sandbox'])

但是它不起作用。看来是浏览器问题。我不知道该怎么办

我的代码:

const puppeteer = require('puppeteer');
const url = "https://www.google.com.ar";

(async () => {
  try{
    const navegador = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']}); //Lanzo el chrome
    const pestaña = await navegador.newPage();//abro una nueva pestaña
    await pestaña.goto(url); //paso la url

    let tabla = await pestaña.evaluate(() => {

      const titulos = [
        ...document.querySelectorAll(".descrip_container")
      ].map((map_titulo) => map_titulo.innerText);
      //los "..." hace que en la pestaña se abra la consola
      const precios = [
        ...document.querySelectorAll(".atg_store_newPrice")
      ].map((map_precio) => map_precio.innerText);

      return productos.map((titulo, i) => ({titulos: titulo, precios: precios[i]}));
    })
    console.log(tabla);


    await navegador.close();

  }
  catch(error){
    console.log(error);
  }
})();

2 个答案:

答案 0 :(得分:1)

您似乎忘记了将args放在对象中:

    const browser = await puppeteer.launch({
      args: ['--no-sandbox', '--disable-setuid-sandbox'],
    });

答案 1 :(得分:0)

我也有这个问题。确保您已更新到 nodejs 版本 14。如果它不起作用,请安装缺少的软件包(请参阅如何在此处安装它们:https://medium.com/@ssmak/how-to-fix-puppetteer-error-while-loading-shared-libraries-libx11-xcb-so-1-c1918b75acc3)。除了添加 Yevhen 上面提到的其他参数 (args)。