检查失败 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)
}
})();
答案 0 :(得分:10)
我遇到了同样的问题,我尝试了Puppeteer guide中列出的所有内容,但没有一个适合我。
对我有用的是手动sudo apt-get install chromium-browser
下载铬。
然后,告诉Puppeteer铬的位置:
const browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser'
})
希望这会对某人有所帮助:)
答案 1 :(得分:4)
答案 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文件。