问题描述
当我在本地运行代码时,我正在使用 Puppeteer 将网页转换为 pdf,它完全可以正常工作,但是当我将代码推送到 Azure Linux Web App 服务时,出现错误。
使用的代码:
const puppeteer = require("puppeteer");
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
`https://${env.domain}/authorize?
client_id=${env.clientId}&response_type=token&redirect_uri=${env.redirectUri}`,{ waitUntil: "networkidle2" }
);
await page.waitForSelector('input[name="email"]',{
visible: true,timeout: 5000
});
await page.type('input[name="email"]',env.email,{delay: 50});
await page.type('input[name="password"]',env.password,{delay: 50});
await page.click('button[type="submit"]');
await page.waitForNavigation({ waitUntil: "networkidle2" });
const clientUrl = await page.evaluate(() => window.location.href);
await page.pdf({path: 'sendgrid/html-page.pdf',format: 'A4'});
await browser.close();
我尝试更改我的代码,在本地一切正常,但每当我将其部署到 webapp 时,我都会遇到以下错误
错误 1:
Could not find browser revision 818858. Run "PUPPETEER_PRODUCT=firefox npm install" or "PUPPETEER_PRODUCT=firefox yarn
install" to download a supported Firefox browser binary.
错误 2:
/node_modules/puppeteer/.local-chromium/linux-782078/chrome-linux/chrome: error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
有没有办法解决这个问题
解决方法
如果有人遇到同样的问题,我使用 Node12 在 Azure 上测试了一个简单的工作解决方案。你只需要在 Azure 应用服务>开发工具>SSH 中启动 ssh 终端并 apt-get 安装必要的包。
“libgobject-2.0.so.0”示例,第二个 Google 结果指向此页面 https://packages.debian.org/cgi-bin/search_contents.pl?word=libgobject-2.0.so.0&searchmode=searchfiles&case=insensitive&version=unstable&arch=i386,您可以在其中看到要安装的软件包是“libglib2.0-0”,因此运行“apt-get install libglib2.0-0”,瞧。您可能会遇到其他错误,因此请重复此过程。