我有一个 nuxt 应用程序,我正在尝试将其部署在服务器上。我使用
npm run build
来构建我的项目并测试它是否正常工作,我使用 npm run start
来测试是否有效。当我的应用程序需要使用数据库时,它会抛出一个错误,说该表不存在,但该表存在。当我在开发模式下运行时 npm run dev
,该应用程序运行良好。这是控制台上出现的错误:
[nuxt] [request error] [unhandled] [500]
Invalid `prisma.users.findFirst()` invocation:
The table `main.Users` does not exist in the current database.
at In.handleRequestError (./server/node_modules/@prisma/client/runtime/library.js:122:6854)
at In.handleAndLogRequestError (./server/node_modules/@prisma/client/runtime/library.js:122:6188)
at In.request (./server/node_modules/@prisma/client/runtime/library.js:122:5896)
at async l (./server/node_modules/@prisma/client/runtime/library.js:127:11167)
at async Object.handler (./server/chunks/routes/api/register.post.mjs:25:14)
at async Object.handler (./server/chunks/runtime.mjs:3079:19)
at async Server.toNodeHandle (./server/chunks/runtime.mjs:3345:7)
运行构建后我还使用了命令
npx prisma generate
,但没有成功。我已经被这个问题困扰了几个小时。我还是一个使用 prisma 的初学者。如有任何帮助,我们将不胜感激。
这是在 nuxt 3 项目中使用 sqlite 和 prisma 时出现的问题。对我有用的解决方案是更正架构中引用的 sqlite 数据库文件路径。
如果您在 schema.prisma 文件中使用
url = env("DATABASE_URL")
,则 .env 文件中的 DATABASE_URL 对于生产来说应该是绝对的(这是因为为 nuxt 构建生成的 .output 文件夹已将 schema.prisma 文件复制到 ./output/server/node_modules/.prisma/client/
如果您使用像./dev.db
这样的相对路径,则在生产中找不到数据库文件)。
对我有用的解决方案是在 .env 文件中使用如下路径
DATABASE_URL=file:${PWD}/prisma/main.db
对我来说,进行此更改后,开发和生产都在工作。