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

Prisma集成Serverless AWS-NodeJS-TypeScript模板本地运行报错排查

问题

使用Serverless Framework构建无服务器函数,采用aws-nodejs-typescript模板(依赖serverless-esbuild而非serverless-webpack)。按照Prisma官方AWS Lambda示例执行npx prisma generate && npm install后,运行sls invoke local -f main时出现如下错误:

Error: ENOENT: no such file or directory, open ''/.esbuild/.build/node_modules/.prisma/client/schema.prisma'

当前相关配置:

  1. prisma/schema.prisma中的generator配置:
generator client {
    provider      = "prisma-client-js"
    binaryTargets = ["native", "rhel-openssl-1.0.x"]
}
  1. serverless.ts中的package配置:
package: {
    individually: true,
    patterns: [
        "!node_modules/.prisma/client/libquery_engine-*",
        "node_modules/.prisma/client/libquery_engine-rhel-*",
        "!node_modules/prisma/libquery_engine-*",
        "!node_modules/@prisma/engines/**",
    ],
},

解决方案

1. 补充schema.prisma的打包规则

当前package配置的patterns里没有包含schema.prisma,但Prisma Client运行时需要读取该文件,必须将其加入打包列表:

package: {
    individually: true,
    patterns: [
        // 新增这一行
        "prisma/schema.prisma",
        "!node_modules/.prisma/client/libquery_engine-*",
        "node_modules/.prisma/client/libquery_engine-rhel-*",
        "!node_modules/prisma/libquery_engine-*",
        "!node_modules/@prisma/engines/**",
    ],
},

2. 修正Prisma路径解析问题

serverless-esbuild会将文件打包到.esbuild/.build目录,Prisma可能无法自动识别schema的位置。可以通过两种方式解决:

  • 生成Client时显式指定schema路径:
npx prisma generate --schema=./prisma/schema.prisma
  • 在serverless配置中添加环境变量,指定schema路径:
provider: {
  environment: {
    PRISMA_SCHEMA_PATH: './prisma/schema.prisma'
  }
}

3. 优化引擎文件匹配规则

当前的libquery_engine-rhel-*匹配范围太宽,建议精确匹配AWS Lambda需要的版本,避免打包多余文件:

"node_modules/.prisma/client/libquery_engine-rhel-openssl-1.0.x*",

4. 重新执行构建流程

修改配置后,清理旧构建产物并重新生成Client:

rm -rf .esbuild
npx prisma generate
sls invoke local -f main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:18:25