Búsqueda de sitios web

typescript - TS2305: El módulo '"@prisma/client"' no tiene un miembro exportado 'User'


Estoy tratando de configurar un CI de Gitlab para un proyecto de NestJS que usa Prisma. Cuando ejecuto la canalización, obtengo este error: introducir la descripción de la imagen aquí

Mi .gitlab-ci.yml:

image: node:latest

stages:
  - build

build:
  stage: build
  before_script:
    - corepack enable
    - corepack prepare pnpm@latest-8 --activate
    - pnpm config set store-dir .pnpm-store
  script:
    - pnpm install
    - npx prisma generate
    - pnpm run build
  cache:
    key:
      files:
        - pnpm-lock.yaml
    paths:
      - .pnpm-store
  artifacts:
    paths:
      - dist

user.models.ts:

import { User } from "@prisma/client"; # Line that is causing the build to fail in the CI
import { IsEmail, IsInt, IsNotEmpty, IsString } from "class-validator";

class UserModel implements User {
    @IsNotEmpty()
    @IsInt()
    id: number;

    @IsNotEmpty()
    @IsString()
    @IsEmail()
    email: string;

    @IsNotEmpty()
    @IsString()
    password: string;
}

Ejecutar pnpm run build localmente funciona bien.

Con los siguientes scripts, he revisado manualmente la salida generada por Prisma, y puedo ver que User se está exportando como un tipo desde index.d.ts.

- cd ./node_modules/.prisma/client
- cat index.d.ts
- cd ../../..

Respuesta #1

Para cualquier otra persona con este problema, asegúrese de haber establecido el valor de salida como se indica a continuación en su archivo prisma.schema para que se almacenen los tipos, idealmente esto será su directorio node_modules

generator client {
  ...
  output = "../../node_modules/.prisma/client"
  ...
}

Respuesta #2

Me encontré con el mismo error en el despliegue, pero en mi caso estoy construyendo desde un Dockerfile. Así que para cualquiera que se encuentre con lo mismo pero tenga una configuración diferente, la solución fue añadir una línea en la parte superior del Dockerfile.

COPY prisma ./

Ejemplo

FROM node as installer
WORKDIR /app
COPY prisma ./
...the rest of your code

Artículos relacionados