📝

Next.jsでTrigger.devを使用する際のトラブルシューティングガイド

2025/01/26に公開

はじめに

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を設定する

重要なポイント

  1. syncVercelEnvVars:
    • VercelとTrigger.dev間の環境変数同期
    • 必要な環境変数:
      • VERCEL_ACCESS_TOKEN: Vercelダッシュボードのトークン設定から生成
      • VERCEL_PROJECT_ID: プロジェクト設定から取得
      • VERCEL_TEAM_ID: チームプロジェクトの場合に必要
  2. prismaExtension:
    • Prisma関連ファイルのビルドディレクトリへのコピー
    • デプロイ時のPrismaクライアント生成
    • 正しいランタイムでの動作保証
  3. binaryTargets:
    • native: ローカル開発環境用
    • debian-openssl-3.0.x: Trigger.dev実行環境用
  4. additionalPackages:
    • Trigger.dev環境で必要な追加パッケージのインストール
    • この場合はprisma-json-types-generatorが必要

デプロイ手順

  1. 設定ファイルの更新後、以下のコマンドを実行:
npx prisma generate
npx trigger.dev@latest deploy
  1. デプロイ成功後、Trigger.devダッシュボードでジョブの実行状況を確認できます。

トラブルシューティングのポイント

  • エラーメッセージに応じて、必要なbinaryTargetsを追加
  • Prisma関連の拡張機能が正しく設定されているか確認
  • 必要な追加パッケージがTrigger.dev環境にインストールされているか確認

これらの設定により、Next.js、Prisma、Trigger.devの連携が正しく機能するようになります。

参考

Discussion