如何将 prisma 与无服务器框架 aws-nodejs-typescript 模板集成

Kay*_*Kay 4 node.js serverless-framework prisma prisma2

我正在使用无服务器框架构建无服务器功能。但是我在本地运行时遇到问题

错误:ENOENT:没有这样的文件或目录,打开“/.esbuild/.build/node_modules/.prisma/client/schema.prisma”

prisma/schema.prisma

generator client {
    provider      = "prisma-client-js"
    binaryTargets = ["native", "rhel-openssl-1.0.x"]
}
Run Code Online (Sandbox Code Playgroud)

无服务器.ts

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/**",
    ],
},
Run Code Online (Sandbox Code Playgroud)

脚步:

npx prisma generate && npm install 

sls invoke local -f main
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

笔记

小智 5

您可以通过设置 Prisma 客户端的位置来解决此问题。它适用于本地和 lambda。

prisma/schema.prisma

generator client {
  provider = "prisma-client-js"
  output   = "../src/generated/client"
}
Run Code Online (Sandbox Code Playgroud)
npx prisma generate
Run Code Online (Sandbox Code Playgroud)

无服务器.ts

 package: {
    individually: true,
    patterns: [
      "src/generated/client/schema.prisma",
      "!src/generated/client/libquery_engine-*",
      "src/generated/client/libquery_engine-rhel-*",
      "!node_modules/prisma/libquery_engine-*",
      "!node_modules/@prisma/engines/**",
    ],
  },
Run Code Online (Sandbox Code Playgroud)

一些功能

import { PrismaClient } from "../generated/client";
Run Code Online (Sandbox Code Playgroud)

文件夹结构

- src
  - functions
  - generated
- serverless.ts
- ...

Run Code Online (Sandbox Code Playgroud)