Abu*_*ail 19 node.js puppeteer
检查失败 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)
}
})();
Run Code Online (Sandbox Code Playgroud)
小智 32
我遇到了同样的问题,我尝试了Puppeteer 指南中列出的所有内容 ,但没有一个对我有用。
对我有用的是手动下载铬sudo apt-get install chromium-browser。
然后,告诉 Puppeteer 铬的位置:
const browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser'
})
Run Code Online (Sandbox Code Playgroud)
希望这会帮助某人:)
Tlo*_*eng 15
-在 Linux (Ubuntu)V20 上 -使用 Node 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"]
}
)
Run Code Online (Sandbox Code Playgroud)
如果您以 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 upgrade
apt-get update
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
Run Code Online (Sandbox Code Playgroud)
如果依赖项消失了,那么你的 puppeteer 应该可以正常工作
似乎每个人都有不同的解决方案。这些都不适合我,但我最终在 Ubuntu 20.04 上使用了以下命令:
const browser = await puppeteer.launch({
args: ["--no-sandbox", "--disabled-setupid-sandbox"],
});
Run Code Online (Sandbox Code Playgroud)
小智 8
const browser = await puppeteer.launch({
headless:false,
args: ["--no-sandbox"]
});
Run Code Online (Sandbox Code Playgroud)
安装 puppeteer 和 puppeteer-core。
const browser = await puppeteer.launch({ignoreDefaultArgs: ['--disable-extensions']});
Run Code Online (Sandbox Code Playgroud)
小智 6
apt-get install chromium-browser
Run Code Online (Sandbox Code Playgroud)
尝试使用此命令,您仍然会收到任何错误。
然后安装一些不完整的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
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您遇到无法启动浏览器进程的情况,则可能是您没有安装 chromium
sudo apt-get install chromium-browser
Run Code Online (Sandbox Code Playgroud)
然后设置
在 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
Run Code Online (Sandbox Code Playgroud)
所以我首先进入node_modules/puppeteer/.local-chromium/linux-737027/并找到了一个名为 .zip 的文件chrome-linux.zip夹,其中包含一个名为.zip 的文件夹chrome-linux。
然后我深入到一个目录中chrome-linux,只找到了libGLESv2.so.
所以我把chrome-linuxzip 文件中的目录粘贴进去node_modules/puppeteer/.local-chromium/linux-737027/(所以删除了旧的)。
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
console.log(await browser.version());
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
这产生了
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.
Run Code Online (Sandbox Code Playgroud)
最后按照这个Puppeteer 指南,我启用user namespace cloning了沙箱工作:
sudo sysctl -w kernel.unprivileged_userns_clone=1
Run Code Online (Sandbox Code Playgroud)
再次尝试使用相同的示例。
对我有用的唯一方法(我在 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',
]
});
Run Code Online (Sandbox Code Playgroud)
在启动 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
Run Code Online (Sandbox Code Playgroud)
然后执行 npm start (或任何你有的东西)并且会起作用。
当我在 Ubuntu 服务器上运行我的项目时,我在 puppeteer 中遇到了同样的问题,以下是我修复它的方法。
1-如果尚未安装,请先安装 Chromium
sudo apt-get install chromium-browser
Run Code Online (Sandbox Code Playgroud)
2- 通过在 Ubuntu 终端中运行以下命令找出 Chromium 的路径。
which chromium-browser
Run Code Online (Sandbox Code Playgroud)
3- 将该路径添加到 puppeteer。
const browser: puppeteer.Browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser', <-------
});
Run Code Online (Sandbox Code Playgroud)
4-还要向 puppeteer 添加ignoreDefaultArgs: ['--disable-extensions']。
const browser: puppeteer.Browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser',
ignoreDefaultArgs: ['--disable-extensions'] <----
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56151 次 |
| 最近记录: |