Next.js Discord

Discord Forum

Prisma not reading .env values in turbo repo

Answered
useless posted this in #help-forum
Open in Discord
Avatar
I have a turborepo with prisma as a package. In the schema.prisma DATABASE_URL is not being read or accessed.

error message
 > database@0.0.1 db:migrate
 > prisma migrate dev

 Environment variables loaded from .env
 Prisma schema loaded from prisma\schema.prisma
 Datasource "db": PostgreSQL database
 
 Error: Prisma schema validation - (get-config wasm)
 Error code: P1012
 error: Environment variable not found: DATABASE_URL.
   -->  prisma\schema.prisma:14
    |
 13 |   provider = "postgresql"
 14 |   url      =  env("DATABASE_URL")
    |

 Validation Error Count: 1
 [Context: getConfig]

 Prisma CLI Version : 5.17.0

 Tasks:    0 successful, 1 total
Cached:    0 cached, 1 total
  Time:    2.472s
Failed:    database#db:migrate

 ERROR  run failed: command  exited (1)
 ELIFECYCLE  Command failed with exit code 1.


my folder structure is as follows
.env
turbo.json
/packages
  /database
    /prisma
      /schema.prisma


schema.prisma
datasource db {
  provider = "postgresql"
  url      =  env("DATABASE_URL")
} 


.env
DATABASE_URL=""


turbo.json
{
  "$schema": "https://turbo.build/schema.json",
  "globalDependencies": [".env"],
  "globalEnv": ["DATABASE_URL"],
  "tasks": {
    "clean": {
      "cache": false
    },
    "db:gen": {},
    "db:migrate": {
      "dependsOn": ["^db:migrate"],
      "env": ["DATABASE_URL"]
    },
    "db:studio": {
      "env": ["DATABASE_URL"],
      "outputs": []
    },
    "db:format": {},
    "build": {
      "dependsOn": ["^db:gen", "^build"],
      "inputs": ["$TURBO_DEFAULT", ".env*"],
      "outputs": ["dist/**", ".next/**", "!.next/cache/**"]
    },
    "lint": {
      "dependsOn": ["^lint"]
    },
    "dev": {
      "persistent": true,
      "env": [
        "DATABASE_URL",
        "NODE_ENV",
        "ALLOWED_ORIGINS",
        "IPINFO_API_KEY",
        "JWT_TOKEN_REFRESH_SECRET",
        "JWT_TOKEN_ACCESS_SECRET",
        "REFRESH_TOKEN_EXPIRATION"
      ]
    }
  }
}
Answered by useless
Found a solution using dot-env cli tool
View full answer

4 Replies

Avatar
Found a solution using dot-env cli tool
Answer
Avatar
im pretty sure the recommended way to load env files in turborepo is (as of now) to create symlinks of .env in each individual packages
weird ik but can't do much else if you don't want to manually load the file with dotenv
Avatar
tried it but didn't work for me, I saw it recommended in the Prisma package of turborepo examples.
maybe because I am on windows?