解决:Error nuxt / prisma : Invalid module ".prisma"
我遇到的问题
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
解决方案
- 停止使用@prisma/nuxt。当前版本:@prisma/nuxt@0.3.0、prisma@6.8.2
- 安装依赖项:
yarn add prisma @prisma/client
将prisma文件夹放在项目根目录中。关键配置在prisma/schema.prisma:
generator client { provider = "prisma-client-js" output = "../node_modules/_db" }
官方建议:Prisma 7 必需。此配置在 Linux 上有效,但在 Windows 上无效。请使用上述确切路径;将其放置在 node_modules 之外可能会导致新的错误
将这些脚本添加到 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
为 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;
用法:
- 导入单例:import { prisma } from "~/server/utils/db"
- 导入 TypeScript 类型:import { User, Post } from "~/server/utils/db"
- 没有单例:import { PrismaClient } from "_db"
版权申明
本文系作者 @Mr.Yang 原创发布在果皮皮站点。未经许可,禁止转载。
暂无评论数据