我正在使用这个html-pdf-node库在nodejs端将html转换为pdf文件。转换后它返回pdf缓冲区,我用它发送到邮件。
下面是代码
const file = { content: attachementPdfContentString };
return htmlToPdf.generatePdf(file, options).then(pdfBuffer => {
try {
return this.sendMail({
to: hotelEmail,
subject: "Dashback Invoice",
body: `Hi `,
attachments: [
{
filename: 'invoice.pdf',
content: Buffer.from(pdfBuffer, 'utf-8')
}
]
});
} catch (err) {
console.error("Unable to send mail for hotel invitation", JSON.stringify(invoice));
throw err;
}
这在本地系统上是有效的,pdf是通过nodemailer发送到邮件的。但是当我在heroku dyno上运行同样的代码时,它显示
2022-11-29T15:43:13.506732+00:00 app[web.1]: Error: Failed to launch the browser process!
2022-11-29T15:43:13.506734+00:00 app[web.1]: /app/node_modules/puppeteer/.local-chromium/linux-901912/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
2022-11-29T15:43:13.506734+00:00 app[web.1]:
2022-11-29T15:43:13.506734+00:00 app[web.1]:
2022-11-29T15:43:13.506735+00:00 app[web.1]: TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
2022-11-29T15:43:13.506735+00:00 app[web.1]:
2022-11-29T15:43:13.506735+00:00 app[web.1]: at onClose (/app/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:197:20)
2022-11-29T15:43:13.506736+00:00 app[web.1]: at Interface.<anonymous> (/app/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:187:68)
2022-11-29T15:43:13.506736+00:00 app[web.1]: at Interface.emit (node:events:525:35)
2022-11-29T15:43:13.506737+00:00 app[web.1]: at Interface.close (node:internal/readline/interface:536:10)
2022-11-29T15:43:13.506738+00:00 app[web.1]: at Socket.onend (node:internal/readline/interface:262:10)
2022-11-29T15:43:13.506738+00:00 app[web.1]: at Socket.emit (node:events:525:35)
2022-11-29T15:43:13.506738+00:00 app[web.1]: at endReadableNT (node:internal/streams/readable:1359:12)
2022-11-29T15:43:13.506739+00:00 app[web.1]: at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
我怎么能解决这个问题,或者任何其他的库或方法?
1条答案
按热度按时间bxjv4tth1#
看起来您缺少一个库。
libnss3.so
is found in thelibnss3
Ubuntu package。您可以使用the apt buildpack:1.添加apt构建包作为您的第一个构建包,例如通过运行
1.在项目的根目录中创建一个名为
Aptfile
的文件,其中包含要安装的Ubuntu包的名称,例如请注意,可能需要额外的软件包(见下文)。
1.提交并重新部署。
注意apt构建包不做依赖性解析。如果你在这里添加依赖于其他包的包,你可能需要手动列出那些依赖性。
铬依赖性
运行Chromium或Chrome所需的确切依赖项可能会因发行版和Ubuntu版本的不同而不同,但Puppeteer网站上的依赖项列表是一个很好的起点:
此列表可能会更改,并且不保证完整。建议您访问Puppeteer站点以获取更新的列表,如果您发现缺少其他库,您可以如上所述一次添加一个。