You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用passport.js与passport-local-mongoose登录失败,报Mongoose保存回调错误

问题排查与解决方案

核心原因

你遇到的MongooseError Model.prototype.save() no longer accepts a callback错误,是因为Mongoose v6+版本已移除save()方法的回调参数支持,但当前使用的passport-local-mongoose版本仍依赖旧的回调式save逻辑,两者版本不兼容导致登录流程触发错误。

解决步骤

1. 更新passport-local-mongoose至兼容版本

执行命令更新依赖,确保其适配Mongoose v6+:

npm update passport-local-mongoose
# 或直接安装最新版
npm install passport-local-mongoose@latest

2. 确认User模型配置正确

登录路由代码本身无问题,但需确保User模型正确集成passport-local-mongoose插件,示例配置如下:

const mongoose = require('mongoose');
const passportLocalMongoose = require('passport-local-mongoose');

const UserSchema = new mongoose.Schema({
  // 自定义字段(如邮箱、昵称等)
});

// 必须启用passport-local-mongoose插件
UserSchema.plugin(passportLocalMongoose);

module.exports = mongoose.model('User', UserSchema);

3. 验证Passport初始化逻辑

确保项目入口文件中正确关联Passport与User模型,示例代码:

const passport = require('passport');
const User = require('./models/User');

passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

额外排查点

若更新后仍报错,可尝试:

  • 删除node_modules和package-lock.json,重新执行npm install清理依赖缓存
  • 确认Mongoose版本与passport-local-mongoose的兼容关系(当前最新版passport-local-mongoose已支持Mongoose v6/v7)

内容的提问来源于stack exchange,提问作者feruz00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:57:14