【问题标题】:Route.connect() requires a callback function but got a [object Object]Route.connect() 需要一个回调函数,但得到一个 [object Object]
【发布时间】:2020-09-25 02:53:06
【问题描述】:

每当我尝试启动我的网站时都会出现此错误..我已经安装了所有依赖项..但仍然出现此错误
/workspace/Back_end_ethics/corona/node_modules/express/lib/router/route.js:202 抛出新的错误(味精); ^

Error: Route.connect() requires a callback function but got a [object Object]
    at Route.(anonymous function) [as connect] (/workspace/Back_end_ethics/corona/node_modules/express/lib/router/route.js:202:15)
    at Function.app.(anonymous function) [as connect] (/workspace/Back_end_ethics/corona/node_modules/express/lib/application.js:482:19)
    at Object.<anonymous> (/workspace/Back_end_ethics/corona/app.js:14:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)

App.js 这是主 app.js 文件

var express = require("express");
var app = express();
var mongoose = require("mongoose");
var bodyParser = require("body-parser");
var passport = require("passport");
var localStrategy = require("passport-local");
var flash = require("connect-flash");
//var methodOverride = require("method-override");
var authRoutes = require("./routes/auth");
var covidRoutes = require("./routes/Covid");
var User = require("./models/user");
var Update = require("./models/update");

app.connect("mongodb://localhost/corona",{
    useNewUrlParser:true,
    useUnifiedTopology:true
});

app.set("view engine","ejs");
app.use(express.static(__dirname+"/public"));
app.use(bodyParser.urlencoded({extended:true}));
app.use(flash());

//PASSPORT CONFIG
app.use(require("express-session")({
        secret:"Once again Rusty wins cute dog",
        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;
    res.locals.error = req.flash("error");
    res.locals.success = req.flash("success");
    next();
});

app.use(authRoutes);
app.use(covidRoutes);


//ROUTES
app.get("/charts",function(req,res){
    res.render("charts");
});

app.get("/new",function(req,res){
    res.render("new");
});

app.listen(3000,function(){
    console.log("Server is Started!");
});

models/update.js 这是更新的架构

    var mongoose = require("mongoose");

    var updateSchema = new mongoose.Schema({
        created_at:{type: Date, default: Date.now},
        link:String,
        heading:String
    });

    module.exports = mongoose.model("Update",updateSchema);

models/user.js 这是用户的架构

    var mongoose = require("mongoose");
    var passportLocalMongoose = require("passport-local-mongoose");

    var userSchema = new mongoose.Schema({
        username:String,
        password:String
    });

userSchema.plugin(passportLocalMongoose);

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

routes/auth.js 这是授权的路线,即登录,注册

var express = require("express");
var router = express.Router({mergeParams:true});
var passport = require("passport");
var User = require("../models/user");

router.get("/register",function(req,res){
    res.render("Auth/register",{page:"register"});
});

router.post("register",function(req,res){
    var newUser = new User({username:req.body.username});
    User.register(newUser,req.body.password,function(err,User){
        if(err){
            console.log(err);
            return res.render("Auth/register",{err:err.message});
        }
        passport.authenticate("local")(req,res,function(){
            res.redirect("/new");
        });
    });
});

router.get("/login",function(req,res){
    res.render("Auth/login",{page:"login"});
});

router.post("/login",passport.authenticate("local",{
    successRedirect:"/new",
    failureRedirect:"Auth/login"
}),function(req,res){   
});

module.exports = router;

【问题讨论】:

标签: javascript node.js mongodb express mongoose


【解决方案1】:

你需要用类似的东西来修复你的代码:

要么写:

var user = {
  list : require('./routes/user.js').list
}

或者:

module.exports = function(req, res){
   res.send("respond with a resource");
};

编辑

如果您的routes/user.js 稍后可能会是这样:

module.exports.list = function(req, res){
   res.send("respond with a resource");
};

module.exports.delete = function(req, res){
   res.send("delete user");
};

如果是,那么您可以在 routes.js 中这样写:

var user = require('./routes/user.js');

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2013-09-08
    • 2021-11-28
    • 2014-02-03
    • 2016-04-08
    • 2020-06-29
    相关资源
    最近更新 更多