我遇到的问题

Prisma 与 NuxtJS 配合使用时,开发模式正常,但构建失败,或者构建成功但运行构建结果失败。
无效模块“ .prisma / client / index-browser”不是有效的包名称。

Error nuxt / prisma : Invalid module ".prisma" is not a valid package name imported from ...\node_modules\@prisma\client\default.js

解决方案

  1. 停止使用@prisma/nuxt。当前版本:@prisma/nuxt@0.3.0、prisma@6.8.2
  2. 安装依赖项:yarn add prisma @prisma/client
  3. 将prisma文件夹放在项目根目录中。关键配置在prisma/schema.prisma:

    generator client {
      provider = "prisma-client-js"
      output   = "../node_modules/_db"
    }

    官方建议:Prisma 7 必需。此配置在 Linux 上有效,但在 Windows 上无效。请使用上述确切路径;将其放置在 node_modules 之外可能会导致新的错误

  4. 将这些脚本添加到 package.json 中以供 Prisma 操作(可选):

    "scripts": {
    "prisma:reset": "prisma migrate reset",
    "prisma:migrate": "prisma migrate dev",
    "prisma:generate": "prisma generate"
    }

    修改 prisma/schema.prisma 后,运行 npm run prisma:generate 重新生成../node_modules/_db

  5. 为 Prisma 创建单例(可选)。示例:server/utils/db.ts

    import { PrismaClient } from "_db";
    export * from "_db";
    
    const prismaClientSingleton = () => {
      return new PrismaClient();
    };
    
    declare const globalThis: {
      prismaGlobal: ReturnType<typeof prismaClientSingleton>;
    } & typeof global;
    
    export const prisma = globalThis.prismaGlobal ?? prismaClientSingleton();
    if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma;
  6. 用法:

    • 导入单例:import { prisma } from "~/server/utils/db"
    • 导入 TypeScript 类型:import { User, Post } from "~/server/utils/db"
    • 没有单例:import { PrismaClient } from "_db"
分类: NuxtVue 标签: nuxtvue3prisma

评论

暂无评论数据

暂无评论数据

目录