【问题标题】:Build Nest.js in docker got a Prisma erorr在 docker 中构建 Nextjs 出现 Prisma 错误
【发布时间】:2022-11-23 05:59:21
【问题描述】:

我正在 nest.js 中构建一个应用程序,然后我想通过使用 docker 将其 dockerize,这是我的 docker 文件:

FROM node:14 AS builder

# Create app directory
WORKDIR /app

# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
COPY prisma ./prisma/

# Install app dependencies
RUN npm install

COPY . .

RUN npm run build

FROM node:14

COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist

EXPOSE 3000
CMD [ "npm", "run", "start:prod" ]

然后当我运行时:

docker build -t medicine-api .

我从 prisma 收到了这个错误

Module '"@prisma/client"' has no exported member 'User'.

3 import { User } from '@prisma/client';

这是我的 prisma.schema 文件

/ This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

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

generator prismaClassGenerator {
  provider = "prisma-class-generator"
  dryRun   = false
}

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

model User {
  id               Int                @id @default(autoincrement())
  phoneNumber      String             @unique
  lastName         String
  firstName        String
  role             Role
  bio              String?
  certificate      String?
  pic              String?
  verified         Boolean            @default(false)
  medicine         Medicine[]
  pharmacyMedicine PharmacyMedicine[]
  medicineCategory MedicineCategory[]
  pharmacyPackage  PharmacyPackage[]
  pharmacistOrder  Order[]            @relation("pharmacistOrder")
  userOrder        Order[]            @relation("userOrder")
}

我尝试通过搜索不同的资源和网站来解决此问题,然后他们建议我将 npx prisma generate 放入我的 dockefil。但我仍然在这里遇到另一个错误:

Error: Generator at prisma-class-generator could not start:

/bin/sh: 1: prisma-class-generator: not found

如果您有任何解决方案,我很乐意尝试。提前致谢。

【问题讨论】:

  • 错误何时发生,在构建过程的哪个步骤?
  • RUN npm run build,这一步报错
  • 您的 package.json 文件是什么样的?好像你安装了 prisma 而没有将它作为依赖项出现在 package.json 文件中
  • 你找到解决办法了吗?当前从@prisma/client 导出的所有类型都存在相同的问题

标签: node.js docker nestjs prisma


【解决方案1】:

您必须通过运行命令生成 prisma 客户端

yarn prisma generate

这应该在处理 prisma 文件夹之前 所以我建议将 dockerFile 更改为

FROM node:14 AS builder

# Create app directory
WORKDIR /app

# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./

# Install app dependencies
RUN npm install

COPY . .

RUN yarn prisma generate
COPY prisma ./prisma/


RUN npm run build

FROM node:14

COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist

EXPOSE 3000
CMD [ "npm", "run", "start:prod" ]

prisma generate 步骤将确保您的 node_modules 中有 prisma 客户端,以便它可用于迁移 prisma 模型

【讨论】:

    猜你喜欢
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 2021-11-24
    • 2018-05-04
    相关资源
    最近更新 更多