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

Prisma Client执行报错:this.engine.dmmf is not a function 求助

排查Prisma脚本运行时TypeError: this.engine.dmmf is not a function错误

问题场景

我有一个数据库填充脚本lifeseed.ts,通过node ./lifeseed.ts运行,代码如下:

const { PrismaClient } = require('@prisma/client');
const { faker } = require('@faker-js/faker');

const prisma = new PrismaClient();

main();

async function main() {
    console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Starting 2,999 Coin Transaction Seed Function");
    for (let i=0; i<=5; i++) {
        await prisma.coinTransaction.create({
            data: {
                userId: 1,
                coinId: 1,
                paymentId: 'test'+faker.datatype.uuid(),
                checkoutSessionCompleted: new Date('1-1-1969')
            }
        });
    }
    console.log("Seed Function Completed");
};

运行后报错:

PS C:\Users\jonat\facti\server\prisma\seeds> node .\lifeseed.ts
Starting AI Community Seed Function
C:\Users\jonat\facti\server\node_modules\@prisma\client\runtime\index.js:27892
    return JSON.parse(await this.engine.dmmf());
                                        ^

TypeError: this.engine.dmmf is not a function
    at LibraryEngine.getDmmf (C:\Users\jonat\facti\server\node_modules\@prisma\client\runtime\index.js:27892:41)
    at async C:\Users\jonat\facti\server\node_modules\@prisma\client\runtime\index.js:35539:24
    at async PrismaClient._executeRequest (C:\Users\jonat\facti\server\node_modules\@prisma\client\runtime\index.js:36111:22)
    at async PrismaClient._request (C:\Users\jonat\facti\server\node_modules\@prisma\client\runtime\index.js:36082:16)
    at async C:\Users\jonat\facti\server\prisma\seeds\lifeseed.ts:107:29 {
  clientVersion: '4.8.0'
}

可能的原因及解决方法

1. 重新生成Prisma Client

Prisma Client依赖根据schema.prisma生成的代码,若生成不完整会导致引擎方法缺失:

  • 执行命令重新生成:
    npx prisma generate
    
  • 确保生成过程无报错,若有错误先修复schema.prisma中的问题。

2. 升级Prisma版本

你使用的4.8.0版本存在已知的引擎兼容bug,升级到最新稳定版可解决:

  • 执行升级命令:
    npm install prisma@latest @prisma/client@latest
    
  • 升级完成后再次执行npx prisma generate。

3. 修复损坏的依赖文件

若引擎文件因安装异常损坏,可重新安装依赖:

  • 删除node_modules和锁文件:
    rm -rf node_modules package-lock.json
    
  • 重新安装依赖:
    npm install
    
  • 再执行npx prisma generate确保引擎正确加载。

4. 正确运行TypeScript脚本

直接用node运行.ts文件未经过编译,可能导致模块加载异常:

  • 方式一:先编译再运行
    npx tsc lifeseed.ts
    node lifeseed.js
    
  • 方式二:用ts-node直接运行
    npx ts-node lifeseed.ts
    

5. 优化Prisma实例的初始化与销毁

添加错误捕获和实例断开逻辑,避免资源泄漏:

async function main() {
  try {
    console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Starting 2,999 Coin Transaction Seed Function");
    for (let i=0; i<=5; i++) {
        await prisma.coinTransaction.create({
            data: {
                userId: 1,
                coinId: 1,
                paymentId: 'test'+faker.datatype.uuid(),
                checkoutSessionCompleted: new Date('1-1-1969')
            }
        });
    }
    console.log("Seed Function Completed");
  } catch (e) {
    console.error(e);
    process.exit(1);
  } finally {
    await prisma.$disconnect();
  }
};

main();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:20:24