【Next.js】pdfkit-tableのエラーを解消する’

こんにちは、フリーランスエンジニアの太田雅昭です。

pdfkit-table

pdfkit-tableは、pdfkitでtableを簡単に作成できるライブラリです。2025年3月8日現在、最終更新が3年前です。とても便利なライブラリですが、エラーが出ます。

https://www.npmjs.com/package/pdfkit-table

Babel関連のエラー

Babelのバージョンアップに伴って、インポートでエラーになります。

TypeError: Class extends value #<Object> is not a constructor or null

issue: https://github.com/natancabral/pdfkit-table/issues/46

next.config.tsを下記のようにして解決します。

const nextConfig: NextConfig = {
  webpack: (config) => {
    config.module.rules.push({
      test: /pdfkit-table\/index\.js$/,
      loader: 'string-replace-loader',
      options: {
        search: 'require("pdfkit")',
        replace: 'require("pdfkit").default',
      },
    },);
    return config;
  },
};

string-replace-loaderをインストールしてください。

npm i -D string-replace-loader

フォントを修正する

レンダリングのたびにデフォルトフォントを読もうとするのですが、next.js環境ででフォントが見つからないためにエラーとなります。

no such file or directory, open '.../Helvetica-Bold.afm

issue: https://github.com/natancabral/pdfkit-table/issues/64

下記のようにして、レンダリング前に明示的にフォントを読み込むことで解決します。

await doc
      .table({
        ...
      }, {
        prepareHeader: () => doc.font(fontPath),
        prepareRow: () => doc.font(fontPath)
      });

GAS

次の記事

【GAS】eBayのOAuth2認証をする