📝
Next.jsでTrigger.devを使用する際のトラブルシューティングガイド
はじめに
Trigger.devは長時間実行可能なバックグラウンドジョブを管理するプラットフォームです。Next.jsプロジェクトでPrismaと組み合わせて使用する際の設定方法とトラブルシューティングについて解説します。
発生した問題
1. Prismaのランタイムエラー:
Invalid prisma.user.findFirstOrThrow() invocation:
Prisma Client could not locate the Query Engine for runtime "debian-openssl-3.0.x"
2. デプロイ時のジェネレーターエラー:
Error: Generator "prisma-json-types-generator" failed:
/bin/sh: 1: prisma-json-types-generator: not found
解決方法
1. schema.prismaの設定
prisma/schema.prisma
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "debian-openssl-3.0.x"]
}
2. trigger.config.tsの設定
trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk/v3";
import { syncVercelEnvVars } from "@trigger.dev/build/extensions/core";
import { prismaExtension } from '@trigger.dev/build/extensions/prisma';
import { additionalPackages } from "@trigger.dev/build/extensions/core";
export default defineConfig({
project: "YOUR_PROJECT_REF",
runtime: "node",
logLevel: "log",
maxDuration: 3600,
build: {
extensions: [
syncVercelEnvVars(),
prismaExtension({
schema: 'prisma/schema.prisma',
}),
additionalPackages({ packages: ["prisma-json-types-generator"] })
],
},
});
※YOUR_PROJECT_REF
には下図のProject ref
を設定する
重要なポイント
- syncVercelEnvVars:
- VercelとTrigger.dev間の環境変数同期
- 必要な環境変数:
- VERCEL_ACCESS_TOKEN: Vercelダッシュボードのトークン設定から生成
- VERCEL_PROJECT_ID: プロジェクト設定から取得
- VERCEL_TEAM_ID: チームプロジェクトの場合に必要
- prismaExtension:
- Prisma関連ファイルのビルドディレクトリへのコピー
- デプロイ時のPrismaクライアント生成
- 正しいランタイムでの動作保証
- binaryTargets:
- native: ローカル開発環境用
- debian-openssl-3.0.x: Trigger.dev実行環境用
- additionalPackages:
- Trigger.dev環境で必要な追加パッケージのインストール
- この場合はprisma-json-types-generatorが必要
デプロイ手順
- 設定ファイルの更新後、以下のコマンドを実行:
npx prisma generate
npx trigger.dev@latest deploy
- デプロイ成功後、Trigger.devダッシュボードでジョブの実行状況を確認できます。
トラブルシューティングのポイント
- エラーメッセージに応じて、必要なbinaryTargetsを追加
- Prisma関連の拡張機能が正しく設定されているか確認
- 必要な追加パッケージがTrigger.dev環境にインストールされているか確認
これらの設定により、Next.js、Prisma、Trigger.devの連携が正しく機能するようになります。
参考
- The trigger.config.ts file
https://trigger.dev/docs/config/config-file - Prisma setup guide
https://trigger.dev/docs/guides/frameworks/prisma - Syncing environment variables from your Vercel projects
https://trigger.dev/docs/guides/examples/vercel-sync-env-vars
Discussion