🍣
Vercelでunable to determine transport target for "pino-pretty"と怒られる
問題
ChatGPTに聞いたら一撃で解決したが、Zennに解決方法を記載しておく。
Next.jsでWEBアプリケーションを開発しており、loggerとしてpinoを使用していた。
BizDevサイドも見れるように、Vercelにデプロイを行うと、ビルドは成功するが以下のメッセージでエラーが発生してしまう。
コード
logger.ts
export const logger = pino({
transport: {
target: 'pino-pretty',
options: { colorize: true }
},
browser: {
asObject: true,
},
timestamp: pino.stdTimeFunctions.isoTime,
});
解決方法
- Vercelのシステム環境変数を使用して、Vercelにデプロイされているかを判断を行う。
- Vercelにデプロイされている場合は
pino-pretty
を使用しないようにする。
Vercelの環境変数はSystem Environment Variables Overviewを参照しました。
コード
logger.ts
export const logger = pino({
// Vercelの環境変数によってログの出力先を変更
transport: process.env.VERCEL ? undefined : {
target: 'pino-pretty',
options: { colorize: true }
},
browser: {
asObject: true,
},
timestamp: pino.stdTimeFunctions.isoTime,
});
Discussion