运行 firebase 云函数中的 puppeteer 代码
running puppeteer code in firebase cloud functions
我正在开发一个个人项目,这是一个应用程序,用户可以在其中输入他们的地址和信用卡信息,然后单击一个按钮为我经常访问的其中一所大学购买停车证。
我想在 firebase 的云存储中托管我的前端,并且我想创建一个云函数,其中 puppeteer 代码可以 运行 使用我保存到 firebase 的实时数据库中的信息。
firebase 云函数是否可以 运行 购买停车证的伪造代码?
由于 puppeteer 不能使用云函数,我可以使用 Heroku 来托管 puppeteer 代码吗?
目前无法将 Puppeteer 与 Cloud Functions node 6 运行time 一起使用,因为 运行 部署代码的服务器实例缺少共享Puppeteer 所需的库。您可以在 this GitHub issue. Also see this issue.
中阅读相关内容
从 node 8 运行time 版本开始,puppeteer 所需的库可用。
我遇到了类似的问题,我已经使用 https://www.browserless.io/ 来帮助解决这个问题。他们还有一个供私人使用的 docker 图像,这可能是 运行 无头 chrome 与木偶操纵者的一种方式。
无需使用本地浏览器启动 puppeteer,您可以使用其服务上的端点连接到其实例上的 puppeteer,如下所示:
const puppeteer = require('puppeteer');
puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io'
}).then(async browser => {
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'screenshot.png'});
page.close();
});
如果你想在云函数中使用 await 和 async,你需要在上传之前转换为 ES5。请参阅使用 typescript 作为编译器的解决方案:https://github.com/ultrasaurus/firebase-functions-typescript
现在可以在 Cloud Functions 中 运行 Puppeteer(从 August 13, 2018 开始)。
注意:其中一些命令在 "beta" SDK 中,因此将来无疑会发生变化。 quick start guide 包含最新文档。
1) 在撰写本文时,您需要使用 Node 8 和 beta 组件:
gcloud components update
gcloud components install beta
2) 节点示例中有一个 "headless Chrome" 示例,它展示了如何将屏幕截图创建为 PNG(虽然有 other options 可用)。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
cd nodejs-docs-samples/functions/headless-chrome
3) 部署组件
gcloud beta functions deploy screenshot --runtime nodejs8 --trigger-http
4) 最后,您需要增加内存分配。默认情况下,Cloud Functions 仅获得 256Mb 的内存,因此如果您尝试 运行 Puppeteer 而未先更改内存设置,则会出现错误。在 Cloud Console、select Cloud Functions、select 您的函数中打开您的项目,然后单击 编辑 。 512Mb 对我来说不够,所以我升到了 2Gb。
截至目前,您可以在 nodejs 的 firebase 云函数中使用 puppeteer。
Google Cloud Functions 首次发布时,它唯一 运行 支持的版本是 Node.js 版本 6,OS 缺少几个包,这使得 运行 Chrome 以这种方式。
但这是通过在 App Engine 标准上发布 Node.js 8 运行 时间而成为可能的,这与 Google 云函数使用的 运行 时间相同。查看宣布它的官方博客post:
link
我正在开发一个个人项目,这是一个应用程序,用户可以在其中输入他们的地址和信用卡信息,然后单击一个按钮为我经常访问的其中一所大学购买停车证。
我想在 firebase 的云存储中托管我的前端,并且我想创建一个云函数,其中 puppeteer 代码可以 运行 使用我保存到 firebase 的实时数据库中的信息。
firebase 云函数是否可以 运行 购买停车证的伪造代码?
由于 puppeteer 不能使用云函数,我可以使用 Heroku 来托管 puppeteer 代码吗?
目前无法将 Puppeteer 与 Cloud Functions node 6 运行time 一起使用,因为 运行 部署代码的服务器实例缺少共享Puppeteer 所需的库。您可以在 this GitHub issue. Also see this issue.
中阅读相关内容从 node 8 运行time 版本开始,puppeteer 所需的库可用。
我遇到了类似的问题,我已经使用 https://www.browserless.io/ 来帮助解决这个问题。他们还有一个供私人使用的 docker 图像,这可能是 运行 无头 chrome 与木偶操纵者的一种方式。
无需使用本地浏览器启动 puppeteer,您可以使用其服务上的端点连接到其实例上的 puppeteer,如下所示:
const puppeteer = require('puppeteer');
puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io'
}).then(async browser => {
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'screenshot.png'});
page.close();
});
如果你想在云函数中使用 await 和 async,你需要在上传之前转换为 ES5。请参阅使用 typescript 作为编译器的解决方案:https://github.com/ultrasaurus/firebase-functions-typescript
现在可以在 Cloud Functions 中 运行 Puppeteer(从 August 13, 2018 开始)。
注意:其中一些命令在 "beta" SDK 中,因此将来无疑会发生变化。 quick start guide 包含最新文档。
1) 在撰写本文时,您需要使用 Node 8 和 beta 组件:
gcloud components update
gcloud components install beta
2) 节点示例中有一个 "headless Chrome" 示例,它展示了如何将屏幕截图创建为 PNG(虽然有 other options 可用)。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
cd nodejs-docs-samples/functions/headless-chrome
3) 部署组件
gcloud beta functions deploy screenshot --runtime nodejs8 --trigger-http
4) 最后,您需要增加内存分配。默认情况下,Cloud Functions 仅获得 256Mb 的内存,因此如果您尝试 运行 Puppeteer 而未先更改内存设置,则会出现错误。在 Cloud Console、select Cloud Functions、select 您的函数中打开您的项目,然后单击 编辑 。 512Mb 对我来说不够,所以我升到了 2Gb。
截至目前,您可以在 nodejs 的 firebase 云函数中使用 puppeteer。 Google Cloud Functions 首次发布时,它唯一 运行 支持的版本是 Node.js 版本 6,OS 缺少几个包,这使得 运行 Chrome 以这种方式。 但这是通过在 App Engine 标准上发布 Node.js 8 运行 时间而成为可能的,这与 Google 云函数使用的 运行 时间相同。查看宣布它的官方博客post: link