为什么 NextJs 不在 heroku 上生成这个文件?

时间:2021-04-20 21:46:16

标签: pdf heroku next.js puppeteer

我正在使用 Heroku 上托管的 NextJs,并且运行 localhost 的项目在公共文件夹中生成一个 pdf 文件,但在 Heroku 上不会发生。

这是否与 Heroku 临时存储有关?我希望不是因为项目只需要生成pdf给用户下载,然后就可以删除了。

我正在使用 puppeteer 生成 pdf,代码基本上是:

const browser = await puppeteer.launch({
  headless: true,
  defaultViewport: null,
  args: ['--incognito', '--no-sandbox', '--single-process', '--no-zygote'],
});
const page = await browser.newPage();
await page.setContent('content-goes-here');
await page.emulateMediaType('screen');

await page.pdf({
  path: 'public/file.pdf',
  format: 'A4',
  printBackground: true,
});
await browser.close();

这适用于本地主机,但不会在 Heroku 上生成文件,我不知道原因。

1 个答案:

答案 0 :(得分:1)

确保你安装了 Heroku Buildpack for Puppeteer

您可以通过相应地运行以下命令从终端执行此操作

heroku buildpacks:clear
heroku buildpacks:add --index 1 https://github.com/jontewks/puppeteer-heroku-buildpack
heroku buildpacks:add --index 1 heroku/nodejs

你可以通过你的 Heroku 仪表板来完成

打开 Heroku 应用程序,转到 Settings > Buildpacks > Add buildpack 并添加 URL

https://github.com/jontewks/puppeteer-heroku-buildpack