首页 文章

抛出新的TypeError('Router.use() requires middleware function but got a ' gettype(fn));

提问于
浏览
-1

我用MongoJS创建了一个快速应用程序 . 我正在返回一个函数,但它仍然显示一个对象已被返回 . 我甚至在我的JavaScript页面中添加了 module.exports=router . 有人可以在这里指出丢失的出口吗?

app.js

var express = require('express');
var define = require('./user/userSlots');
var app = express();
app.set("views", "./view");
app.use('/', define);
app.listen(3111, function () {
    console.log('Example app listening on port 3111!');
});

userSlots.js

var express = require('express');
var module = require('../admin/dbModule');
var router = express.Router();

router.get('/login', function(request, response) {
    var username = request.params.username;
    var email = request.params.email;
    module.authenticateUser(username, email, response);
});
module.exports = router;

dbModule.js

var mongojs = require("../../node_modules/mongojs");
var databaseUrl = "localhost/user";
var db = mongojs(databaseUrl);
var test = db.collection('user_information');
var message = null;
db.user_information.ensureIndex({ email: 1 }, { unique: true });
exports.authenticateUser = function(username, email, response) {
    db.user_information.find({ username: username, email: email }, function(err, users) {
        if (err || !users) {
            console.log("Failure");
            message = "Failure";
            reponse.render('index', { title: 'Hello', message: message });
        } else if (users.length == 0) {
            console.log("Not Valid user");
            message = "Failure";
            reponse.render('index', { title: 'Hello', message: message });
        } else {
            console.log("valid");
            message = "Success";
            reponse.render('index', { title: 'Hello', message: message });
        }
    });
}

错误:

E:\Vehicles\vehicles.com\node_modules\express\lib\router\index.js:458

      throw new TypeError('Router.use() requires middleware function but got a '
 + gettype(fn));
      ^

TypeError: Router.use() requires middleware function but got a Object
    at Function.use (E:\Vehicles\vehicles.com\node_modules\express\li
b\router\index.js:458:13)
    at EventEmitter.<anonymous> (E:\Vehicles\vehicles.com\node_module
s\express\lib\application.js:220:21)
    at Array.forEach (native)
    at EventEmitter.use (E:\Vehicles\vehicles.com\node_modules\expres
s\lib\application.js:217:7)
    at Object.<anonymous> (E:\Vehicles\vehicles.com\application\app.j
s:12:5)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

1 回答

  • 0

    您在此行中重新定义 module 导致问题:

    var module = require('../admin/dbModule');
    

    并且,然后期望它是原始的,内置的 module 以后用这个:

    module.exports = router;
    

    改变这个:

    var module = require('../admin/dbModule');
    

    用不同的名字:

    var dbModule = require('../admin/dbModule');
    

    然后,使用 dbModule 来引用您的数据库模块,然后内置的 module 仍然可以在 module.exports 中正常使用 .

相关问题