我有一个简单的注册表,“应该”保存到数据库中。但是,在终端中,此错误不断出现:
(node:14764) UnhandledPromiseRejectionWarning: TypeError: cb is not a function
at promise.then.catch.err (C:\Users\*confidential*\node_modules\passport-local-mongoose\index.js:250:21)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(node:14764) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().(rejection id: 1)
这是我的server.js文件,无法确定问题是否出在此文件中,或者是否与node-modules文件夹有关:
// **************************************** \\
// SETUP
// **************************************** \\
var express = require("express"),
bodyParser = require("body-parser"),
mongoose = require("mongoose"),
passport = require("passport"),
LocalStrategy = require("passport-local"),
User = require("./models/user");
mongoose.connect("mongodb://localhost/FirstWebApp", { useNewUrlParser:true });
var app = express();
app.use(bodyParser.urlencoded({extended:true}));
app.use(express.static(__dirname + "/public"));
app.use(require("express-session")(
{
secret: "ManArGer",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(function(req,res,next)
{
res.locals.currentUser = req.user;
next();
});
app.set("view engine", "ejs");
// **************************************** \\
// ROUTES
// **************************************** \\
// HOMEPAGE
app.get("/", function(req,res)
{
res.render("index");
});
// DASHBOARD
app.get("/dashboard", isLoggedIn, function(req,res)
{
res.render("dashboard");
});
// REGISTER
app.get("/register", function(req,res)
{
res.render("register");
});
// REGISTER - POST (New user sign-up)
app.post("/register", function(req,res)
{
// Get form data, then apply to USER database model
var newUser = new User({username: req.body.username});
User.register(newUser, req.body.email, req.body.password, function(err,new_user)
{
// If error: Provide useful output to user and redirect
if(err)
{
// < useful output here >
console.log(err);
return res.render("register");
}
// Authenticate user and redirect to dashboard (main app)
passport.authenticate("local")(req,res,function()
{
res.redirect("/dashboard");
});
});
});
// **************************************** \\
// FUNCTIONS
// **************************************** \\
// Lockout un-authenticated user from a route (must log in)
function isLoggedIn(req,res,next)
{
if(req.isAuthenticated())
{
return next();
}
res.redirect("/");
}
// **************************************** \\
// SERVER START
// **************************************** \\
app.listen(3000, function()
{
console.log("SERVER STARTED");
});
这是app.post,注册页面,请求方法,节点模块文件,Mongoose / MongoDB配置等的路由问题吗?
编辑-这是请求的user.js文件代码:
var mongoose = require("mongoose"),
passportLocalMongoose = require("passport-local-mongoose");
var user_Schema = new mongoose.Schema(
{
username: String,
email: String,
password: String
});
user_Schema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", user_Schema);