[英]throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn));
I have created an express application with MongoJS.我用 MongoJS 创建了一个快速应用程序。 I am returning a function, still it's showing an object has been returned.
我正在返回一个函数,它仍然显示已返回一个对象。 I have even added
module.exports=router
in my JavaScript page.我什
module.exports=router
在我的 JavaScript 页面中添加了module.exports=router
。 Can someone please point out the missing export here?有人可以指出这里缺少的导出吗?
app.js
: 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
: 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
: 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 });
}
});
}
Error:错误:
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)
You are causing a problem by redefining module
in this line:您通过在此行中重新定义
module
而导致问题:
var module = require('../admin/dbModule');
And, then expecting it to be the original, built-in module
later with this:并且,然后期望它稍后成为原始的内置
module
:
module.exports = router;
Change this:改变这个:
var module = require('../admin/dbModule');
to a different name:到一个不同的名字:
var dbModule = require('../admin/dbModule');
And, then use dbModule
to refer to your database module and then the built-in module
will still be available for normal use in module.exports
.并且,然后使用
dbModule
来引用您的数据库模块,然后内置module
仍然可以在module.exports
正常使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.