TypeScript x Prisma x Express でseed.tsファイルを作成したときに発生した現象。
現象
seed.tsファイルの1行目に以下のエラーが表示される。@prisma/client が見つからないとのこと。
Cannot find module '@prisma/client' or its corresponding type declarations.ts(2307)
seed.ts:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
const event = await prisma.event.upsert({
where: { eventId: '6fpnLXWKuBrTsJEmPqHfMhUN928UQVtk3J6GGyEvFBso' },
update: {},
create: {
eventId: '6fpnLXWKuBrTsJEmPqHfMhUN928UQVtk3J6GGyEvFBso',
prize: 10000000,
},
});
console.log({ event });
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});
原因
@prisma/client は、 npx prisma migrate や npx prisma db push をすると自動作成されるのだが、今回は migrate をしていなかったため、エラーになっていた。
対応
今回は migrate を実行して解決した。
% npx prisma migrate reset
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "dev.db" at "file:./dev.db"
✔ Are you sure you want to reset your database? All data will be lost. … yes
Applying migration `20221231160027_`
Database reset successful
The following migration(s) have been applied:
migrations/
└─ 20221231160027_/
└─ migration.sql
Running generate... (Use --skip-generate to skip the generators)
added 2 packages, and audited 370 packages in 4s
20 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
✔ Generated Prisma Client (4.8.0 | library) to ./node_modules/@prisma/client in 92ms
Running seed command `ts-node prisma/seed.ts` ...
{
event: {
id: 1,
eventId: '6fpnLXWKuBrTsJEmPqHfMhUN928UQVtk3J6GGyEvFBso',
prize: 10000000
}
}
🌱 The seed command has been executed.