首頁  >  文章  >  web前端  >  Prisma 錯誤:未找到環境變數:DATABASE_URL

Prisma 錯誤:未找到環境變數:DATABASE_URL

Susan Sarandon
Susan Sarandon原創
2024-10-31 08:14:30179瀏覽

Prisma error: Environmental variable not found: DATABASE_URL

解決 Prisma 中的“未找到環境變數:DATABASE_URL”錯誤

使用 Prisma 時,您可能會遇到令人沮喪的「未找到環境變數:DATABASE_URL」錯誤,即使您的 .env 檔案中明確定義了該變數。此錯誤通常表示您的 schema.prisma 檔案與環境變數之間斷開連接,從而阻止 Prisma 存取資料庫連接詳細資訊。


第 1 步:驗證您的 .env 檔案

第一步是確認 DATABASE_URL 變數已正確定義。開啟根目錄中的 .env 檔案並確保以下內容:

  1. 存在: 檢查 DATABASE_URL 變數是否存在。
  2. 正確值: 確認連接字串正確且格式為:
   DATABASE_URL="mydatabaseurlstring"

理解錯誤

如果 DATABASE_URL 定義正確但錯誤仍然存在,Prisma 可能無法存取它。 Prisma Client 依賴 schema.prisma 檔案進行配置,該檔案使用 env() 函數透過環境變數檢索連接 URL。如果 Prisma 在用戶端產生過程中無法定位 DATABASE_URL,則會觸發「未找到環境變數」錯誤。


解:npx prisma generated

在專案的根目錄中執行以下命令:

npx prisma generate

此指令重新產生 Prisma 用戶端,允許 Prisma 重新讀取 .env 檔案中的環境變數並將它們合併到產生的客戶端程式碼中。

為什麼有效

透過重新產生 Prisma 用戶端,此命令可確保 Prisma 與您的架構保持同步,並且可以存取環境變量,包括 DATABASE_URL。


其他案例場景

1。使用 Next.js 運行 Prisma Studio

在使用 Next.js 的專案中,環境變數儲存在 .env.local 中,請在執行 Prisma 指令之前明確載入它:

   npm install -g dotenv-cli
   dotenv -e .env.local -- npx prisma studio

2。 Next.js 中的 .env 與 .env.local

在 Next.js 中,將 .env.local 重新命名為 .env 有時可以解決 Prisma 存取問題。 Prisma 通常預設從 .env 讀取變量,因此標準化此檔案可能會防止相容性問題。

3。使用 Vercel 和 Vercel Postgres

如果您使用 Vercel 並已使用 vercel pull 將環境變數拉入 .env.development.local,請將它們複製到 .env,因為 Prisma 主要從此檔案讀取:

   cp .env.development.local .env

現在,嘗試執行 Prisma 指令,例如:

   npx prisma db pull
   npx prisma generate
   npx prisma migrate

4。 PrismaClient 導入語法

如果您在匯入中使用 @prisma/client/edge,例如:

   DATABASE_URL="mydatabaseurlstring"

切換到:

npx prisma generate

使用 @prisma/client 而不是邊緣版本可以幫助解決 Prisma 環境變數處理的不一致問題。


預防未來問題

  1. 重新啟動伺服器: 在 .env 變更後重新啟動伺服器可確保載入新變數。
  2. 使用dotenv載入變數:安裝dotenv以有效管理環境變數:
   npm install -g dotenv-cli
   dotenv -e .env.local -- npx prisma studio

將其載入到應用程式的入口點(例如 src/hooks.server.js):

   cp .env.development.local .env
  1. 仔細檢查路徑和拼字: 確保您的 .env 檔案位於正確的位置,並且變數名稱拼字一致。

快樂駭客

PS:這裡是 Prisma 官方文件的鏈接,以了解有關管理 .env 文件的更多詳細資訊。

以上是Prisma 錯誤:未找到環境變數:DATABASE_URL的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn