schema.plugin 的第一个参数必须是函数 (passport-local-mongoose)
First param to schema.plugin must be a function (passport-local-mongoose)
我一直在尝试在我的服务器中使用 passport-local-mongoose。
在教程视频的帮助下制作这个服务器。在教程视频中,同样的代码工作得很好,但在我的例子中它不起作用。虽然我的数据库已连接到 mongodbatlas。
但是我得到一个错误“schema.plugin()
的第一个参数必须是一个函数,”
Screenshot of the ERROR
我想知道如何将插件用作函数!尝试在各处搜索但没有任何帮助。
以下是代码
const express = require("express");
const mongoose = require("mongoose");
const session = require("express-session");
const passport = require("passport");
const passportLocalMongoose = ("passport-local-mongoose");
const app = express();
app.use(session({
secret: "alpha beta gama",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
mongoose.connect("mongodb+srv://admin-sumit:password@cluster0-bessu.mongodb.net/myBlog", {
useNewUrlParser: true,
useUnifiedTopology: true
});
const userSchema = new mongoose.Schema({
email:String,
password:String,
comments:String
});
userSchema.plugin(passportLocalMongoose);
const User = new mongoose.model("User", userSchema);
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.get("/blog1comment", function(req, res){
if(req.isAuthenticated()){
res.render('blogsingle', { title: 'Express' });
} else{
res.redirect("/login");
}
});
app.post('/register', function(req, res){
User.register({username: req.body.username}, req.body.password, function(err, user){
if(err){
console.log(err);
res.redirect("/register");
} else {
passport.authenticate("local")(req, res, function(){
res.redirect("/");
});
}
});
});
app.post('/login', function(req, res){
const user = new User({
username: req.body.username,
password: req.body.password
});
req.login(user, function(err){
if(err){
console.log(err);
} else{
passport.authenticate("local")(req, res, function(){
res.redirect("/");
});
}
});
});
app.listen(process.env.PORT || 3000, function(){
console.log('Server is running');
});
请帮我解决这个问题。
const passportLocalMongoose = ("passport-local-mongoose");
只是我没有在那里使用 require ,愚蠢的我。
现在解决了
const passportLocalMongoose = require("passport-local-mongoose");
这解决了。
我一直在尝试在我的服务器中使用 passport-local-mongoose。
在教程视频的帮助下制作这个服务器。在教程视频中,同样的代码工作得很好,但在我的例子中它不起作用。虽然我的数据库已连接到 mongodbatlas。
但是我得到一个错误“schema.plugin()
的第一个参数必须是一个函数,”
Screenshot of the ERROR
我想知道如何将插件用作函数!尝试在各处搜索但没有任何帮助。 以下是代码
const express = require("express");
const mongoose = require("mongoose");
const session = require("express-session");
const passport = require("passport");
const passportLocalMongoose = ("passport-local-mongoose");
const app = express();
app.use(session({
secret: "alpha beta gama",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
mongoose.connect("mongodb+srv://admin-sumit:password@cluster0-bessu.mongodb.net/myBlog", {
useNewUrlParser: true,
useUnifiedTopology: true
});
const userSchema = new mongoose.Schema({
email:String,
password:String,
comments:String
});
userSchema.plugin(passportLocalMongoose);
const User = new mongoose.model("User", userSchema);
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.get("/blog1comment", function(req, res){
if(req.isAuthenticated()){
res.render('blogsingle', { title: 'Express' });
} else{
res.redirect("/login");
}
});
app.post('/register', function(req, res){
User.register({username: req.body.username}, req.body.password, function(err, user){
if(err){
console.log(err);
res.redirect("/register");
} else {
passport.authenticate("local")(req, res, function(){
res.redirect("/");
});
}
});
});
app.post('/login', function(req, res){
const user = new User({
username: req.body.username,
password: req.body.password
});
req.login(user, function(err){
if(err){
console.log(err);
} else{
passport.authenticate("local")(req, res, function(){
res.redirect("/");
});
}
});
});
app.listen(process.env.PORT || 3000, function(){
console.log('Server is running');
});
请帮我解决这个问题。
const passportLocalMongoose = ("passport-local-mongoose"); 只是我没有在那里使用 require ,愚蠢的我。 现在解决了 const passportLocalMongoose = require("passport-local-mongoose"); 这解决了。