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

独立API项目调用含Prisma的后端库时遇初始化错误求解

解决类库中Prisma Client未初始化的问题

问题场景

  • 项目1:Essentials(类库),封装所有数据库CRUD操作,依赖@prisma/client与数据库交互
  • 项目2:Api(Next.js项目),仅调用Essentials类库的函数提供接口

调用接口时触发以下错误:

ready - started server on 0.0.0.0:3001, url: http://localhost:3001
info  - SWC minify release candidate enabled. https://nextjs.link/swcmin
info  - automatically enabled Fast Refresh for 1 custom loader
event - compiled client and server successfully in 235 ms (178 modules)
wait  - compiling...
event - compiled client and server successfully in 43 ms (178 modules)
wait  - compiling /api/register...
event - compiled successfully in 22 ms (42 modules)
error - Error: @prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.
In case this error is unexpected for you, please report it in https://github.com/prisma/prisma/issues
    at new PrismaClient (/home/roringo1/Desktop/antique-collection-local-2/antique-api/node_modules/.prisma/client/index.js:3:11)
    at Object.<anonymous> (/home/roringo1/Desktop/antique-collection-local-2/antique-api/node_modules/antique-essentials/build/lib/prisma.js:5:35)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Module.require (node:internal/modules/cjs/loader:1028:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/roringo1/Desktop/antique-collection-local-2/antique-api/node_modules/antique-essentials/build/registerAccount.js:37:18)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)

已尝试next-transpile-modules但无效,以下是可行解决方案:

解决方案

1. 调整类库的Prisma生成路径

在Essentials项目的prisma/schema.prisma中指定生成的Prisma Client输出到类库的构建目录,确保Api项目能正确读取:

generator client {
  provider = "prisma-client-js"
  output   = "../build/lib/prisma-client" // 指向类库编译后的输出目录
}

执行npx prisma generate重新生成客户端,确认文件生成在指定路径下。

2. 确保类库打包包含Prisma Client文件

  • 若用TypeScript,在tsconfig.json中添加生成的Prisma路径到include:
    {
      "include": ["src/**/*", "build/lib/prisma-client/**/*"]
    }
    
  • 若用webpack,添加复制插件将Prisma Client文件同步到构建目录:
    const CopyPlugin = require('copy-webpack-plugin');
    
    module.exports = {
      plugins: [
        new CopyPlugin({
          patterns: [{ from: './prisma/client', to: './lib/prisma-client' }]
        })
      ]
    };
    

3. 延迟实例化Prisma Client

避免在类库的模块顶层直接实例化PrismaClient,改用延迟加载或单例模式:

// 单例模式示例
let prismaInstance;

export function getPrisma() {
  if (!prismaInstance) {
    prismaInstance = new PrismaClient();
  }
  return prismaInstance;
}

4. 检查依赖配置

  • 确保Essentials的package.json中@prisma/client在dependencies而非devDependencies,保证Api项目安装类库时自动引入该依赖
  • 在Api项目根目录执行npm install或yarn install更新依赖

5. 备选:在Api项目中重新生成Prisma Client

如果类库配置无法调整,可在Api项目中同步Essentials的schema,然后执行npx prisma generate,确保Api项目的node_modules/.prisma/client存在有效文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:55:16