ウェブサイト検索

node.js - なぜCatchブロックはPrismaエラーをキャッチできないのですか?


こんにちは、なぜ try-catch が PrismaClientInitializationError をキャッチしないのか知りたいです:関数が try-catch ブロック内にあってもです。エラーがキャッチされなかった理由を知りたいのであって、エラーの解決方法についてではありません。
これは私のコードです

try
{
    await prisma.user.createMany({
        data : Array.from({length : numberOfUsers}, () => ({
            fullName : faker.internet.userName(),
            email : faker.internet.email().trim().toLowerCase(),
            password : faker.internet.password().substring(0, 4).toLowerCase().trim(),
            phone : faker.phone.number(),
            verified : true,
        }))
    });

}
catch(error){
    console.log("Error", "Wiiiiii");
}

そしてこれが出力です

PrismaClientInitializationError:
Invalid `prisma.user.createMany()` invocation in
/mnt/c/Users/khalid/Desktop/bringoria-hunt/backend/prisma/seed.ts:33:20

  30
  31
  32 async function createUsers(numberOfUsers : number){
→ 33    await prisma.user.createMany(
error: Environment variable not found: DATABASE_URL.
  -->  schema.prisma:11
   |
10 |     provider = "mongodb"
11 |     url      = env("DATABASE_URL")
   |

回答 #1

エラーは ~/backend/prisma/seed.ts から発生しており、環境変数 URL DATABASE_URL が見つからないというものです。これは最初にあなたが示したコードブロックとは関係ありません。エラーを正しくキャッチするには、~/backend/prisma/seed の createUsers メソッド内の await 関数の周りに try/catch を追加する必要があります。