@prisma/client 还没有初始化。请运行"prisma generate"再尝试导入

@prisma/client did not initialize yet. Please run "prisma generate" and try to import it again

我正在使用 prisma、postgres、docker、kubernets。

npx prisma migrate dev 工作。

npx prisma generate 产生以下输出:

✔ Generated Prisma Client (2.23.0) to ./node_modules/@prisma/client in 68ms
You can now start using Prisma Client in your code. Reference: https://pris.ly/d/client

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

但是当我尝试在我的路由文件中使用时产生错误:

新-route.ts

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

我的docker文件:

FROM node:alpine

WORKDIR /app
COPY package.json .
RUN npm install --only=prod
COPY . .

CMD ["npm", "start"]

我在开发时通常不会为此使用 docker,但每次我在 schema.prisma 中更改某些内容并且必须使用 npx prisma generate 时,我都会遇到这个问题。我的解决方案是再次重新启动节点应用程序 运行 npm start。也许如果你重新启动你的容器它可能会工作。

如果您在 kubernets pod 中,则使用终端访问 pod,然后给出生成命令

kubectl exec -it pod_name sh
npx prisma generate

我知道这已被标记为已解决,但我只是想与感兴趣的人分享我的设置。

Docker 文件

# Build image
FROM node:16.13-alpine as builder
WORKDIR /app

# Not sure if you will need this
# RUN apk add --update openssl

COPY package*.json ./
RUN npm ci --quiet

COPY ./prisma prisma
COPY ./src src
RUN npm run build

# Production image

FROM node:16.13-alpine
WORKDIR /app
ENV NODE_ENV production

COPY package*.json ./
RUN npm ci --only=production --quiet

COPY --chown=node:node --from=builder /app/prisma /app/prisma
COPY --chown=node:node --from=builder /app/src /app/src

USER node

EXPOSE 8080
CMD ["node", "src/index.js"]

package.json

{
  "name": "example",
  "description": "",
  "version": "0.1.0",
  "scripts": {
    "generate": "npx prisma generate",
    "deploy": "npx prisma migrate deploy",
    "dev": "npm run generate && nodemon --watch \"src/**\" --ext \"js,json\" --exec \"node src/index.js\"",
    "build": "npm run generate",
    "start": "npm run build && node build/index.js"
  },
  "prisma": {
    "schema": "prisma/schema.prisma"
  },
  "dependencies": {
    "@prisma/client": "^3.6.0"
  },
  "devDependencies": {
    "@tsconfig/node16": "^1.0.2",
    "@types/node": "^16.11.12",
    "nodemon": "^2.0.15",
    "prisma": "^3.6.0"
  }
}

我在 Kubernetes 中 运行 这个。为了使数据库和迁移顺利进行,我 运行 一个 运行 是 prisma migrate deploy.

的 initContainer
apiVersion: apps/v1
kind: Deployment
metadata:
  name: EXAMPLE
spec:
  replicas: 1
  selector:
    matchLabels:
      app: EXAMPLE
  strategy:
    rollingUpdate:
      maxSurge: 100%
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: EXAMPLE
    spec:
      containers:
        image: DOCKER_IMAGE
        imagePullPolicy: IfNotPresent
        name: SERVICE_NAME
        ports:
        - containerPort: 8080
          name: http
          protocol: TCP
      initContainers:
      - command:
        - npm
        - run
        - deploy
        image: DOCKER_IMAGE
        imagePullPolicy: IfNotPresent
        name: database-migrate-deploy

(这是一个实时服务,我只是复制并删除了所有不必要的东西)

我希望这对某人有用