Nest js Prisma Serverless Prisma 找不到模块'./prisma/client/index'

问题描述 投票:0回答:3

请原谅我的愚蠢,我是这个概念和 stackoverflow 社区的新手。我一直在关注 freeCodeCamp 的 NestJs 初学者课程的教程。 https://www.youtube.com/watch?v=GHTA143_b-s&t=21s 而且我一直在尝试使用Serverless框架来部署。每当我向端点请求时,我都会收到以下错误 导入模块错误:Prisma 找不到模块“./prisma/client/index”。

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}


我的 prisma 代码是:https://github.com/Jaethem8y/research-nestjs/tree/main/prisma

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient {
  constructor(config: ConfigService) {
    super({
      datasources: {
        db: {
          url: config.get('DATABASE_URL'),
        },
      },
    });
  }
}

Prisma 服务代码是:https://github.com/Jaethem8y/research-nestjs/tree/main/src/prisma

和 serverless.yml :https://github.com/Jaethem8y/research-nestjs/blob/main/serverless.yml

service: research-serverless

frameworkVersion: '3'

plugins:
  - serverless-jetpack

provider:
  name: aws
  runtime: nodejs16.x
  region: us-east-2 

functions:
  api:
    handler: dist/lambda.handler
    events:
      - http:
          method: any
          path: /{proxy+}

我运行 npm build 然后运行 sls deploy。我不知道当前的问题是什么,并且由于缺乏我的技能而未能在谷歌中找到答案。请帮我找到解决方案。谢谢您的宝贵时间。

我曾尝试用谷歌搜索类似的问题,但找不到。看起来该应用程序的 typeorm 版本运行良好。我想知道什么可能导致这个问题。

nestjs serverless prisma
3个回答
3
投票

首先,您应该在发布链接之前验证您的存储库是否实际上是公开的。我认为您的存储库已设置为私有。

其次,您所描述的错误来自于prisma客户端不存在。请确保在 prisma.schema 中声明模型后使用

prisma generate
命令实际生成客户端。您还应该验证是否在容器映像中生成客户端(如果适用)。


0
投票

修改您的 Nest-cli.json 文件以将生成的文件夹包含为资产。

{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "deleteOutDir": true,
    "assets": [
      {
        "include": "../prisma/generated",
        "outDir": "dist/prisma",
        "watchAssets": true
      }
    ],
    "watchAssets": true
  }
}


-1
投票

前几天我也遇到了同样的问题, 但就我而言,我使用 Vercel 作为部署平台

Serverless平台无法识别绝对导入; 相反,我必须选择相对导入,修改导入方法后, 它有效。

© www.soinside.com 2019 - 2024. All rights reserved.