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会因无法读取环境变量失败。
验证步骤
- 确认根目录.env文件中
DATABASE_URL配置正确 - 执行
npm run build完成构建 - 按对应系统命令启动生产服务,检查数据库请求是否正常
内容的提问来源于stack exchange,提问作者Anthony Jekanyika
相关产品推荐
相关产品推荐

