javascript - Puppeteer.launch 取决于操作系统

标签 javascript puppeteer

是否可以根据操作系统平台设置浏览器启动的参数逻辑,如下所示:

const puppeteer = require('puppeteer');
const browserFetcher = puppeteer.createBrowserFetcher();

    (async () => {
      const platforme = await browserFetcher.platform()
      const browser = await puppeteer.launch( 
  ??? ()=>{
         if (platforme=="win64"||"win32")
      //run this params   headless: false; defaultViewport: null;
         else if (platforme=="linux")
      //run this params headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox','--disable-dev-shm-usage']
     });
     const page = await browser.newPage();

最佳答案

如果您确实需要这种晦涩的简洁性,您可以将扩展与条件运算符一起使用:

{
  const platforme = "win64";
  const config = { ...(
    platforme === "win64" || platforme === "win32" ? { headless: false } :
    platforme === "linux" ? { headless: true } :
    {}
  ) };
  console.log(config);
}

{
  const platforme = "linux";
  const config = { ...(
    platforme === "win64" || platforme === "win32" ? { headless: false } :
    platforme === "linux" ? { headless: true } :
    {}
  ) };
  console.log(config);
}

{
  const platforme = "aix";
  const config = { ...(
    platforme === "win64" || platforme === "win32" ? { headless: false } :
    platforme === "linux" ? { headless: true } :
    {}
  ) };
  console.log(config);
}

https://2ality.com/2017/04/conditional-literal-entries.html 中查看更多和一些替代方案

另一种变体:

const configs = {
  win64: { headless: false },
  win32: { headless: false },
  linux: { headless: true },
}

{
  const platforme = "win64";
  const config = configs[platforme] ?? {};
  console.log(config);
}

{
  const platforme = "linux";
  const config = configs[platforme] ?? {};
  console.log(config);
}

{
  const platforme = "aix";
  const config = configs[platforme] ?? {};
  console.log(config);
}

关于javascript - Puppeteer.launch 取决于操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67449588/

相关文章:

javascript - 如何通过多个图像循环 div 的背景 url?

javascript - 删除包含重复单元格的行

javascript - Kendo 自动完成默认值

javascript - JS puppeteer 使用 for 循环迭代链接

javascript - puppeteer 操纵者无法控制第三个选项卡

TypeScript - Puppeteer 库错误 : "Cannot find name ' Element'"

javascript - 如何使用 JavaScript 将表单输入和音乐从一个页面传递到另一个页面?

javascript - 单击后禁用按钮并且应该适用于所有类型的浏览器?

javascript - Puppeteer 响应不返回 css 文件

javascript - 登录 Gmail 失败,原因不明