Javascript Passport.js抛出错误,缺少SchemaError(名称)

Javascript Passport.js抛出错误,缺少SchemaError(名称),javascript,express,mongoose,passport.js,Javascript,Express,Mongoose,Passport.js,试图对后端进行编码,这会在控制台中引发错误。有什么问题吗?我根据需要导入了user.js,但仍然不起作用 错误:mongoose.Error.MissingSchemaError(名称);尚未为模型“用户”注册架构。使用mongoose.model(名称、模式) Passport.js const passport = require('passport'); const user = require('../schema/user'); const LocalStrategy = requir

试图对后端进行编码,这会在控制台中引发错误。有什么问题吗?我根据需要导入了user.js,但仍然不起作用

错误:
mongoose.Error.MissingSchemaError(名称);尚未为模型“用户”注册架构。使用mongoose.model(名称、模式)

Passport.js

const passport = require('passport');
const user = require('../schema/user');
const LocalStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');
const User = mongoose.model('User');

 
passport.use(new LocalStrategy({
  usernameField: 'email'
},
(username, password, done) => {
  User.findOne({ email: username }, (err, user) => {  
     if (err) { return done(err); }
     if (!user) {
        return done(null, false, {
            message: 'Incorrect username.'
        });
     }
     if (!user.validPassword(password)) {  
        return done(null, false, {
           message: 'Incorrect password.'
        });
     }
     return done(null, user);  
  });
}
));
const mongoose = require("mongoose");
const crypto = require('crypto');  
const jwt = require('jsonwebtoken');


const userSchema = new mongoose.Schema({
   email: {
      type: String,
      unique: true,
      required: true
   },
   name: {
      type: String,
      required: true
   },
   hash: String,
   salt: String
});

userSchema.methods.setPassword = function (password) {  
  this.salt = crypto.randomBytes(16).toString('hex');
  this.hash = crypto
  .pbkdf2Sync(password, this.salt, 1000, 64, 'sha512')  
  .toString('hex');
  };

userSchema.methods.validPassword = function (password) {
    const hash = crypto
    .pbkdf2Sync(password, this.salt, 1000, 64, 'sha512')
    .toString('hex');
    return this.hash === hash;
};

userSchema.methods.generateJwt = function () {
    const expiry = new Date();
    expiry.setDate(expiry.getDate() + 7);  
    return jwt.sign({
    _id: this._id,
    email: this.email,
    name: this.name,
    exp: parseInt(expiry.getTime() / 1000, 10),  
    }, process.env.JWT_SECRET );  
};
 

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

const passport = require('passport');
const user = require('../schema/user');
const LocalStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');
const User = mongoose.model('User');

 
passport.use(new LocalStrategy({
  usernameField: 'email'
},
(username, password, done) => {
  User.findOne({ email: username }, (err, user) => {  
     if (err) { return done(err); }
     if (!user) {
        return done(null, false, {
            message: 'Incorrect username.'
        });
     }
     if (!user.validPassword(password)) {  
        return done(null, false, {
           message: 'Incorrect password.'
        });
     }
     return done(null, user);  
  });
}
));
const mongoose = require("mongoose");
const crypto = require('crypto');  
const jwt = require('jsonwebtoken');


const userSchema = new mongoose.Schema({
   email: {
      type: String,
      unique: true,
      required: true
   },
   name: {
      type: String,
      required: true
   },
   hash: String,
   salt: String
});

userSchema.methods.setPassword = function (password) {  
  this.salt = crypto.randomBytes(16).toString('hex');
  this.hash = crypto
  .pbkdf2Sync(password, this.salt, 1000, 64, 'sha512')  
  .toString('hex');
  };

userSchema.methods.validPassword = function (password) {
    const hash = crypto
    .pbkdf2Sync(password, this.salt, 1000, 64, 'sha512')
    .toString('hex');
    return this.hash === hash;
};

userSchema.methods.generateJwt = function () {
    const expiry = new Date();
    expiry.setDate(expiry.getDate() + 7);  
    return jwt.sign({
    _id: this._id,
    email: this.email,
    name: this.name,
    exp: parseInt(expiry.getTime() / 1000, 10),  
    }, process.env.JWT_SECRET );  
};
 

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

在passport.js文件中,您不需要require
require('mongoose')
mongoose.model('User')
,因此删除它们并将
User
更改为
User
,如下所示:

const passport = require('passport');
const User = require('../schema/user');// change user to User
const LocalStrategy = require('passport-local').Strategy;