【发布时间】: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