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

NestJS+Prisma部署Serverless报错:找不到./prisma/client/index模块

问题分析与解决办法

错误原因

这个报错的核心是Serverless部署包中缺少Prisma Client的生成文件,或者Lambda运行时的模块解析路径与本地环境不匹配。Prisma Client需要通过prisma generate命令生成,默认存放在node_modules/@prisma/client目录,但Serverless打包工具(如serverless-jetpack)可能未正确包含该目录,导致Lambda运行时找不到模块。


具体解决步骤

1. 确保构建时预生成Prisma Client

修改package.json的build脚本,在NestJS构建前先执行Prisma Client生成命令,保证构建产物包含最新的Client文件:

"scripts": {
  "build": "prisma generate && nest build"
}

2. 配置Serverless打包工具包含Prisma Client

在serverless.yml中添加serverless-jetpack的include规则,强制将Prisma Client目录纳入部署包:

custom:
  jetpack:
    include:
      - node_modules/@prisma/client/**

3. 自定义Prisma Client生成路径(推荐方案)

将Prisma Client生成到项目源码目录,让NestJS构建时自动将其打包到dist目录,避免依赖node_modules的路径问题:

  • 修改prisma/schema.prisma的generator配置:
    generator client {
      provider = "prisma-client-js"
      output = "../src/prisma/client"
    }
    
  • 更新Prisma Service的导入路径:
    import { Injectable } from '@nestjs/common';
    import { ConfigService } from '@nestjs/config';
    import { PrismaClient } from './client'; // 对应自定义生成路径
    
    @Injectable()
    export class PrismaService extends PrismaClient {
      constructor(config: ConfigService) {
        super({
          datasources: {
            db: {
              url: config.get('DATABASE_URL'),
            },
          },
        });
      }
    }
    
  • 重新执行prisma generate和npm run build后再部署。

4. 确认Lambda环境变量配置

在serverless.yml中明确注入DATABASE_URL环境变量,确保Lambda运行时能正确连接数据库:

provider:
  name: aws
  runtime: nodejs16.x
  region: us-east-2
  environment:
    DATABASE_URL: ${env:DATABASE_URL}

5. 验证部署包内容

执行sls package生成部署包,解压后检查是否包含Prisma Client相关文件(无论是node_modules/@prisma/client还是自定义生成的src/prisma/client目录),确认文件路径与代码导入路径一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:10:39