はじめに
今週から Next.js で遊び始めました。
Prismaを設定していた時に、環境変数が見つからない問題でハマったのでメモします。
利用環境
- Node.js: v22.17.1
- Next.js: 16.0.0
- Prisma: 6.18.0
- SQLite: dev.db
"dependencies": {
"@prisma/client": "^6.18.0",
"next": "16.0.0",
"prisma": "^6.18.0",
"react": "19.2.0",
"react-dom": "19.2.0",
"zod": "^4.1.12"
}
問題
prisma migrate 実行時に、以下のエラーが表示されてDB構築できない。
npx prisma migrate dev --name init
Error: PrismaConfigEnvError: Missing required environment variable: DATABASE_URL
前提の設定
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
DATABASE_URL="file:./dev.db"
// ❌ Before
import { defineConfig, env } from "prisma/config";
export default defineConfig({
schema: "prisma/schema.prisma",
migrations: {
path: "prisma/migrations",
},
engine: "classic",
datasource: {
url: env("DATABASE_URL"),
},
});
対策
.env ファイルを絶対パス指定で読み込みむように変更します。
// ✅ After
import { defineConfig, env } from "prisma/config";
import * as dotenv from "dotenv";
import path from "node:path";
dotenv.config({ path: path.resolve(process.cwd(), ".env") });
export default defineConfig({
schema: "prisma/schema.prisma",
migrations: {
path: "prisma/migrations",
},
engine: "classic",
datasource: {
url: env("DATABASE_URL"),
},
});
実行結果
npx prisma migrate dev --name init
Loaded Prisma config from prisma.config.ts.
Prisma config detected, skipping environment variable loading.
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "dev.db" at "file:./dev.db"
SQLite database dev.db created at file:./dev.db
Applying migration `20251101033221_init`
The following migration(s) have been created and applied from new schema changes:
prisma/migrations/
└─ 20251101033221_init/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (6.18.0) to ./src/generated/prisma in 45ms
無事に通りました。
