是否可以根据操作系统平台设置浏览器启动的参数逻辑,如下所示:
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/