2017-09-25 5 views
-1

MongoJS로 명시 적 응용 프로그램을 만들었습니다. 나는 함수를 반환하고있다. 여전히 객체가 반환되었음을 보여주고있다. 자바 스크립트 페이지에서 module.exports=router을 추가했습니다. 누군가 여기서 누락 된 수출을 지적 할 수 있습니까?새로운 TypeError를 던집니다 ('Router.use()는 미들웨어 기능이 필요하지만'+ gettype (fn)을 가짐);

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) 

답변

0

당신은이 줄 module을 재정 의하여 문제를 일으키는 :

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

그리고, 다음으로 그것을 기대 원래 내장 module 후반에 :

module.exports = router; 

변경이 : 다른 이름으로

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

:

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

그리고, 다음 데이터베이스 모듈을 참조하는 다음 내장 module 것은 여전히 ​​module.exports에서 정상 사용을 위해 사용할 수 dbModule를 사용합니다.

+0

감사합니다. 지금 일하고있다. –