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

在Nuxt 3中调用dotenv.config()报错:process.cwd is not a function

Nuxt3集成Drizzle时process.cwd is not a function错误解决

你在Nuxt3中集成Drizzle时,编写了/server/db/index.ts代码如下:

import { sql } from '@vercel/postgres';
import { drizzle } from 'drizzle-orm/vercel-postgres';
import dotenv from 'dotenv';
import * as schema from './schema';
import path from 'path'

dotenv.config({ path: '../../.env' });

export const db = drizzle(sql, { schema });

在组件中导入db时出现500错误:

500
process.cwd is not a function

at Object.configDotenv (http://localhost:3000/_nuxt/node_modules/.cache/vite/client/deps/dotenv.js?v=c9c673b9:267:47)
at Object.config (http://localhost:3000/_nuxt/node_modules/.cache/vite/client/deps/dotenv.js?v=c9c673b9:314:29)
at http://localhost:3000/_nuxt/server/db/index.ts?t=1720792472809:5:8

问题原因

  1. Nuxt3的/server目录属于服务端专属代码,不能直接在客户端组件中导入使用,客户端环境中不存在process对象,导致调用dotenv.config()时触发process.cwd is not a function错误。
  2. 手动调用dotenv.config()完全多余——Nuxt3会自动加载项目根目录的.env文件,无需手动配置。

解决步骤

  1. 修改数据库配置文件
    移除dotenv相关代码,Nuxt3会自动处理环境变量:
import { sql } from '@vercel/postgres';
import { drizzle } from 'drizzle-orm/vercel-postgres';
import * as schema from './schema';

export const db = drizzle(sql, { schema });
  1. 通过服务端API间接操作数据库
    所有数据库操作必须放在服务端上下文(如/server/api、/server/routes)中,客户端通过API请求获取数据。

示例:创建服务端API路由
在/server/api/get-records.ts中编写:

import { db } from '../db/index';
import { yourTable } from '../db/schema';

export default defineEventHandler(async () => {
  const records = await db.select().from(yourTable);
  return records;
});
  1. 客户端组件调用API
    在组件中通过useFetch请求服务端API:
<script setup>
const { data: records } = await useFetch('/api/get-records');
</script>

<template>
  <div v-for="record in records" :key="record.id">
    {{ record }}
  </div>
</template>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:52:38