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

Serverless部署Express+TS+Prisma应用时遇schema.prisma缺失错误

解决Serverless部署Express+TypeScript+Prisma时找不到schema.prisma的问题

问题分析

部署后出现ENOENT: no such file or directory, open '/var/task/src/schema.prisma'错误,核心原因是部署包未包含schema.prisma文件,且Prisma客户端引擎未正确打包到Serverless运行环境中。本地运行正常是因为本地保留了完整的Prisma文件结构。

解决方案

1. 调整serverless-bundle配置,强制包含Prisma相关文件

修改serverless.yml中的custom.bundle配置,添加includeFiles字段,确保schema文件和Prisma生成的客户端文件被纳入部署包:

custom:
  # ... 其他原有配置
  bundle:
    linting: false
    excludeFiles: "**/*.test.ts"
    includeFiles:
      - "src/schema.prisma"  # 包含你的schema定义文件
      - "node_modules/.prisma/client/**/*"  # 包含Prisma生成的客户端及引擎文件

2. 绑定Prisma生成命令到部署流程

部署前必须执行prisma generate生成适配Serverless环境的客户端,将命令整合到部署脚本中避免遗漏:
在项目根目录的package.json中添加脚本:

"scripts": {
  "deploy": "npx prisma generate && serverless deploy"
}

后续部署时使用npm run deploy代替直接执行serverless deploy。

3. 显式指定Prisma schema路径(可选)

在初始化PrismaClient时,通过绝对路径指定schema文件位置,避免部署环境下路径解析偏差:

// app.ts(或app.js)
import { PrismaClient } from '@prisma/client';
import path from 'path';

const prisma = new PrismaClient({
  schema: path.join(__dirname, 'schema.prisma'),
});

4. 调整插件加载顺序

确保serverless-webpack-prisma在serverless-bundle之后加载,保证插件能正确处理打包后的Prisma文件:

plugins:
  - serverless-dotenv-plugin
  - serverless-bundle
  - serverless-webpack-prisma
  - serverless-offline

5. 验证打包结果

运行serverless package生成部署包,解压后检查以下内容:

  • /var/task/src/目录下是否存在schema.prisma
  • node_modules/.prisma/client目录下是否包含对应Linux环境的引擎文件(如libquery_engine-linux-arm64-openssl-1.1.x.so.node)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:57:16