mongodb - 存储用户数据 - NextAuth v3 与 MongoDB
问题描述
在我的 NextJS 应用程序中,我尝试使用 MongoDB 来存储 Next-Auth (v3) 包正在使用的用户数据。
我/api/auth/[...nextauth].js
文件中的代码:
import NextAuth from 'next-auth'
import Providers from 'next-auth/providers'
export default NextAuth({
providers: [
Providers.OneLogin({
clientId: process.env.ONELOGIN_CLIENT_ID,
clientSecret: process.env.ONELOGIN_CLIENT_SECRET,
domain: process.env.ONELOGIN_DOMAIN
})
],
callbacks: {
jwt: async (token, user, account, profile, isNewUser) => {
if (user) { //-- if success, store the id of the user in jwt token
token.uid = user.id;
}
return Promise.resolve(token);
},
session: async (session, user) => {
session.user.uid = user.uid; //-- store the id of the user in the session data
return Promise.resolve(session);
}
},
// Optional SQL or MongoDB database to persist users
database: process.env.MONGODB_URL
// database: {
// type: "mongodb",
// useNewUrlParser: true,
// url: process.env.MONGODB_URL,
// },
})
但它总是抛出以下错误:
[next-auth][error][session_error] https://next-auth.js.org/errors#session_error 错误:找到可选依赖项 [mongodb] 但版本 [4.1.2] 不满足约束 [^3.5.9 ]
我已经安装了这个mongodb
包。我无法弄清楚这个问题。我的 MongoDB url 工作正常,因为它能够执行其他数据库操作(如添加新数据、获取等)
解决方案
问题是依赖的主要版本不同并且被认为是破坏:"^3.5.9"
将满足 v3 中的更新。您的版本4.1.2
将被视为超出范围,因为对主要版本的更改4
将被视为重大/破坏性。
包.json
"peerOptionalDependencies": {
"mongodb": "^3.5.9",
"mysql": "^2.18.1",
"mssql": "^6.2.1",
"pg": "^8.2.1",
"@prisma/client": "^2.16.1"
},
更新mongodb
版本以支持主要版本的更改,"mongodb": "^3.5.9 || ^4",
即"mongodb": "^4",
等
"peerOptionalDependencies": {
"mongodb": "^3.5.9 || ^4",
"mysql": "^2.18.1",
"mssql": "^6.2.1",
"pg": "^8.2.1",
"@prisma/client": "^2.16.1"
},
推荐阅读
- spring-boot - 从 Wildfly 10 中排除所有模块
- python - 如何在 python gtk gui 中显示 opencv 视频帧?
- forms - 从上一页网址预填充表单复选框
- r - 如何使用坐标创建地图(使用不同颜色的点)
- django - 如何阻止来自邮递员,失眠等应用程序的请求并只允许一个来源 - django rest框架
- java - 如何摆脱错误“致命信号 11 (SIGSEGV),代码 1,故障地址 0x70”
- excel - 通过条码切换excel表
- python - 如何使用 Python 使用 AWS Lambda 层?
- python-3.x - 我无法通过 pycharm 在 git 上推送我的完整项目
- trace - 无法使用 SerilogTraceListener 将 Trace.WriteLine 重定向到 Serilog