You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt生产环境下Prisma无法读取环境变量问题求助

Nuxt生产环境Prisma无法读取DATABASE_URL的解决办法

问题重现

Nuxt开发环境中Prisma运行正常,但生产环境下抛出Environment variable not found: DATABASE_URL错误,已尝试构建前后执行npx prisma generate、移动.env文件等操作,问题仍存在。

解决方案

1. 生产环境启动时显式注入环境变量

Nuxt生产环境不会自动加载根目录的.env文件,启动服务时需手动传入环境变量:

  • Windows系统:
set DATABASE_URL="file:./dev.db" && node .output/server/index.mjs
  • Linux/macOS系统:
DATABASE_URL="file:./dev.db" node .output/server/index.mjs

若部署到服务器,需通过服务器环境配置(如PM2配置、Docker环境变量、主机系统环境变量)设置DATABASE_URL。

2. 通过Nuxt RuntimeConfig注入环境变量

在nuxt.config.ts中配置服务器端可访问的环境变量:

export default defineNuxtConfig({
  runtimeConfig: {
    databaseUrl: process.env.DATABASE_URL,
    public: {}
  }
})

创建server/utils/prisma.ts自定义Prisma实例,从RuntimeConfig读取数据库地址:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient({
  datasources: {
    db: {
      url: useRuntimeConfig().databaseUrl
    }
  }
})

export default prisma

后续服务器端代码均使用此自定义实例,替代直接导入的默认Prisma客户端。

3. 规范构建脚本确保Prisma生成流程正确

修改package.json的构建脚本,将prisma generate整合到构建流程中,保持.env文件在项目根目录即可:

{
  "scripts": {
    "build": "prisma generate && nuxt build",
    "start": "node .output/server/index.mjs"
  }
}

注意:构建过程中必须确保DATABASE_URL可用,否则prisma generate会因无法读取环境变量失败。

验证步骤

  1. 确认根目录.env文件中DATABASE_URL配置正确
  2. 执行npm run build完成构建
  3. 按对应系统命令启动生产服务,检查数据库请求是否正常

内容的提问来源于stack exchange,提问作者Anthony Jekanyika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:35:25