浏览器控制台报错:
Uncaught TypeError: Failed to resolve module specifier ".prisma/client/index-browser". Relative references must start with either "/", "./", or "../".
同时页面某些功能异常,比如的 primevue
的 Button
组件 as="a"
属性失效,某些点击事件也失效。
不过这是我的问题,因为我设置了 nitro.prerender.failOnError: false
导致我忽略了很多错误信息。直到加入了 prisma
之后才暴漏出来
关于这个问题,Prisma 官方文档上有提到,但给出的不是最终解决方案
对于 pnpm 来说可以参考这个回答
nuxt.config.ts
import { createRequire } from 'module'
import { defineConfig } from 'vite'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
// @ts-ignore
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const { resolve } = createRequire(import.meta.url)
const prismaClient = `prisma${path.sep}client`
const prismaClientIndexBrowser = resolve('@prisma/client/index-browser').replace(`@${prismaClient}`, `.${prismaClient}`)
export default defineNuxtConfig({
vite: {
resolve: {
alias: {
".prisma/client/index-browser": path.relative(__dirname, prismaClientIndexBrowser)
}
}
}
})
对于 npm
来说,可以参考这个回答,(我没试)
export default defineNuxtConfig({
vite: {
resolve: {
alias: {
".prisma/client/index-browser": "./node_modules/.prisma/client/index-browser.js"
}
}
}
})
而这个问题,是 2022 年就存在的,今年已经是 2025 年😀