【问题标题】:puppeteer(chromium) cannot work on nodejs production serverpuppeteer(chromium) 不能在 nodejs 生产服务器上工作
【发布时间】:2021-04-26 12:42:00
【问题描述】:

我有一个后端 api,它接收从前端发送的 HTML 字符串,并使用 puppeteer 生成一个 pdf 文件,然后将原始数据返回到前端。

exports.createPdf = async (req, res) => {
    const { resumeContent, pageSize } = req.body;
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.setContent(resumeContent);
    const resumePdf = await page.pdf(
        {
            margin: {
                top: '20px',
                bottom: '20px'
            },
            format: pageSize
        }
    );
    await browser.close();
    const base64ResumePdf = resumePdf.toString('base64');
    res.set({
        'Content-Type': 'application/pdf',
        'Content-Length': base64ResumePdf.length
    });
    res.send(base64ResumePdf);
};

一切都在本地环境中完美运行。

但是,在生产(和 UAT)服务器上,请求状态始终处于等待状态 30 秒,然后变为取消。如果我双击取消的请求,它将进入我们官方网站上的 404 页面,没有任何有用的信息。

我只能怀疑 puppeteer 无法在真实服务器上正常工作。 也许对打开 chromium 有一些限制或身份验证?

有人对如何解决此问题有建议吗?

【问题讨论】:

    标签: node.js puppeteer backend chromium


    【解决方案1】:

    https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-on-aws-lambda

    我们的生产服务器在 AWS EC2 上,所以我似乎需要进行一些 EC2 或 lambda 操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2018-09-07
      • 2014-06-19
      • 1970-01-01
      相关资源
      最近更新 更多