A plugin that allows you to use Headless Chrome Pages from Fastify by Puppeteer.
Native TypeScript is supportted.
This plugin was derived from the following repository.
https://github.com/uyamazak/hc-pdf-server
npm i @uyamazak/fastify-hc-pages
# OR
yarn add @uyamazak/fastify-hc-pages
import fastify from 'fastify'
import { hcPages } from '@uyamazak/fastify-hc-pages'
const app = async () => {
const server = fastify()
// Register this plugin
server.register(hcPages)
// Work together with Puppeteer's Page in callback function.
server.get('/gettitle', async (_, reply) => {
// Make result you need in callback function with Page
const result = await server.runOnPage<string>(async (page: Page) => {
await page.goto('https://example.com')
return await page.title()
})
reply.send(result)
})
}
The following settings can be changed in the options when registering this plugin.
Here are the details and default values
server.register(hcPages, {
/**
* Number of Pages to launch.
* Change according to the number of requests and machine resources.
*/
pagesNum: 3,
pageOptions: {
/**
* @see https://pptr.dev/#?product=Puppeteer&version=v8.0.0&show=api-pagesetuseragentuseragent
*/
userAgent: '',
/**
* @see https://pptr.dev/#?product=Puppeteer&version=v8.0.0&show=api-pagesetdefaulttimeouttimeout
*/
pageTimeoutMilliseconds: 10000,
/**
* @see https://pptr.dev/#?product=Puppeteer&version=v8.0.0&show=api-pageemulatemediatypetype
*/
emulateMediaTypeScreenEnabled: false,
/**
* Add Accept-Language HTTP header
*/
acceptLanguage: '',
/**
* @see https://pptr.dev/#?product=Puppeteer&version=v8.0.0&show=api-pagesetviewportviewport
*/
viewport: null,
},
/**
* @see https://pptr.dev/#?product=Puppeteer&version=v8.0.0&show=api-puppeteerlaunchoptions
*/
launchOptions: {
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-gpu',
'--disable-dev-shm-usage',
]
},
})
MIT
Pull requests, Issues, GitHub Sponsors are welcome.
Thanks!