Next.jsでpino-prettyのtransportオプションを使うとworker threadsの問題でエラーになる。transportの代わりにstreamを使えば解決する。
Next.js 13以降のApp Routerで、pinoのtransportオプションを使ってpino-prettyを設定すると、以下のようなエラーが発生する:
Error: the worker thread exitedpino-prettytransportオプションは内部でworker threadsthread-streamを使用する。Next.jsのバンドラー(SWC/webpack)がこれらのモジュールを正しく処理できず、ランタイムでエラーになる。
// ❌ これはNext.jsで動かない
const logger = pino({
next.config.jsserverExternalPackagesに追加する方法も提案されているが、ビルドは通っても実行時にモジュールが見つからないケースがある。
transportではなくstreamを使う。 streamはworker threadsを使わないため、Next.jsでも問題なく動作する。
import pino from "pino";
import pretty from "pino-pretty";
// ✅ streamを使えばNext.jsでも動く
const stream = pretty({
colorize: true,
ignore: "pid,hostname",
translateTime: "SYS:HH:MM:ss.l",
});
const logger = pino({ level: "debug" }, stream);# 参考
- [Pino Bundling Documentation]