简体   繁体   English

throw new TypeError('Router.use() 需要中间件函数,但得到了一个 ' + gettype(fn));

[英]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.

相关问题 Api : Express : throw new TypeError(&#39;Router.use() 需要一个中间件函数,但得到了一个 &#39; + gettype(fn)) - Api : Express : throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn)) Express.js:抛出新的TypeError(&#39;Router.use()需要中间件功能,但得到了&#39;+ gettype(fn)) - Expressjs: throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn)) 表达错误:抛出新的TypeError(&#39;Router.use()需要中间件功能,但得到了&#39;+ gettype(fn)); - Express error: throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn)); throw new TypeError('Router.use() 需要一个中间件 function 但得到了一个 + gettype(fn))。 (其他问题) - throw new TypeError('Router.use() requires a middleware function but got a + gettype(fn)). (other problem) TypeError(&#39;Router.use()需要中间件功能,但得到了&#39;+ gettype(fn))FeathersJS - TypeError('Router.use() requires a middleware function but got a ' + gettype(fn)) FeathersJS 护照.js +快递:TypeError(&#39;Router.use()需要中间件功能,但得到了&#39;+ gettype(fn)) - passport.js + express: TypeError('Router.use() requires a middleware function but got a ' + gettype(fn)) Node.js / express-Router.use()需要中间件功能,但是得到了&#39;+ gettype(fn)); - Nodejs/express - Router.use() requires middleware function but got a ' + gettype(fn)); 我运行此代码,但显示 router.use() 需要中间件功能,但出现 &#39; + gettype(fn) 这个错误 - i run this code but showing router.use() requires a middleware function but got a ' + gettype(fn) this error 为什么 npm run 会导致错误:“Router.use() requires a middleware function but a &#39; + gettype(fn)”? - Why does npm run result in the error: “Router.use() requires a middleware function but a ' + gettype(fn)”? TypeError-Router.use()需要中间件功能,但未定义 - TypeError - Router.use() requires a middleware function but got a undefined
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM