首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Puppeteer.launch取决于操作系统

问Puppeteer.launch取决于操作系统
EN

Stack Overflow用户
提问于 2021-05-09 00:06:27
回答 2查看 47关注 0票数 2

是否可以根据OS.platform设置浏览器启动的参数逻辑,如下所示:

代码语言:javascript
复制
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();
EN

回答 2

Stack Overflow用户

发布于 2021-05-09 00:42:35

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

代码语言:javascript
复制
{
  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中查看更多和一些替代方案

另一种变体:

代码语言:javascript
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2021-05-09 16:24:45

多亏了vsemozhebuty,更新了工作代码

代码语言:javascript
复制
const puppeteer = require('puppeteer');
const browserFetcher = puppeteer.createBrowserFetcher();
            
(async () => {
   const platforme = await browserFetcher.platform()
   const config = { ...(
      platforme === "win64" || platforme === "win32" ? { headless: false, defaultViewport: null } :
      platforme === "linux" ? {headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox','--disable-dev-shm-usage']} :
      {}
   ) };
   console.log(config);
   const browser =   await puppeteer.launch(config);
   const page = await browser.newPage();
   //code
})();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67449588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档