小编jul*_*ics的帖子

带有 html-pdf 的 AWS Lambda 上的“错误错误:写入 EPIPE”

我编写了一个 NodeJS 类,它应该从 html 字符串中创建一个 PDF 文件。该类部署在 AWS Lambda 上。它基于 html-pdf ( https://www.npmjs.com/package/html-pdf )。

const {readFileSync} = require('fs');
const pdf = require('html-pdf');

process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];

const options = { format: 'Letter' };

const createPDF = async (fileName, data) => {

    let text = readFileSync('./templates/' + fileName + '.html','utf8');

    data.forEach(element => {
        text = text.replace("{{{" + element[0] + "}}}",element[1]);
    });

    console.log(text);

    return new Promise(function(resolve, reject) {
        pdf.create(text, options).toBuffer(function (err, buffer) {
            if (!err)
                resolve(buffer);
            else
                console.log(buffer)
        }); …
Run Code Online (Sandbox Code Playgroud)

pdf node.js aws-lambda html-pdf node-html-pdf

6
推荐指数
0
解决办法
807
查看次数

由于 Chrome 修订,Firebase puppeteer PDF 功能超时

我有一个 Firebase 函数来创建 PDF 文件。最近,由于“Chrome 修订版”而超时?我既不明白错误消息,也不明白出了什么问题。当我在 MacOS 下将其本地部署时,该功能有效。

TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r818858 is guaranteed to work.
    at Timeout.onTimeout (/workspace/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:204:20)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7) 
Run Code Online (Sandbox Code Playgroud)

功能:

const puppeteer = require('puppeteer');
const createPDF = async (html, outputPath) => {

    let pdf;

    try {
        const browser = await puppeteer.launch({
            args: ['--no-sandbox']
        });
        const page = await browser.newPage();

        await page.emulateMediaType('screen');

        await page.setContent(html, {
            waitUntil: 'networkidle0'
        });

        pdf = await …
Run Code Online (Sandbox Code Playgroud)

chromium node.js firebase google-cloud-functions puppeteer

5
推荐指数
1
解决办法
5407
查看次数