2017-03-19 4 views
0

이 내 app.js입니다 :되지 않는 이유는이 모듈 인쇄

module.exports = function(router) { 
    var security = require('../../lib/security'); 

    router.post("/", function(req, res, next) { 

     console.log('THIS IS PRINTING'); 

     security.security_function(function(err,result){ 
     console.log('THIS IS NOT PRINTING'); 
      }); 
    }); 
    //error handler 
    router.use(function(err, req, res, next) { 
     res.status(500).json(JSON.stringify({ 
      error: err 
     })); 
    }); 
    return router; 
} 

이 내 security.js 파일 :

exports.security_function= function() { 
    console.log("THIS IS NOT PRINTING EITHER"); 
}); 

var express = require('express'); 
var app = express(); 
var router = express.Router(); 

var someroute = require('./someroute')(router); 


app.use('/api/someroute', someroute); 


app.listen(3000, function() { 
    console.log('Server listening on port 3000!') 
}); 

이 내 someroute.js입니다

/api/sameroute URL을 호출하면 첫 번째 console.log가 인쇄되는 것을 볼 수 있기 때문에 라우트에 도달하지만 security_function이 무언가를 인쇄 할 것을 기대할 때 아무것도 인쇄되지 않습니다. 그렇다면이 함수의 결과는 다시 인쇄하기를 원하지만, security_function이 실행되지 않았기 때문에 분명히 인쇄되지 않습니다.

+0

'security.js'의 함수 뒤에 닫는 괄호는 무엇입니까? – Bergi

+0

오류가 있습니까? – Bergi

답변

1

코드가 혼동됩니다. security_function을 인수가없는 함수로 정의했습니다. 그것은 단순히 같은 security.security_function()으로 호출해야합니다 :

module.exports = function(router) { 
    var security = require('../../lib/security'); 

    router.post("/", function(req, res, next) { 

     console.log('THIS IS PRINTING'); 

     // call the security function here 
     security.security_function(); 
    }); 
    //error handler 
    router.use(function(err, req, res, next) { 
     res.status(500).json(JSON.stringify({ 
      error: err 
     })); 
    }); 
    return router; 
} 

그런 다음, 추가로, 제대로 라우터를 사용하고 있지 않습니다. 두 라우터를해야 코드 이런 종류의

app.use('/api/someroute', someroute); 

someroute 또는 그것은 미들웨어 기능해야한다 : 당신은하고있다. 그것은 당신의 경우도 아닙니다. 당신은 router.post()의 기능을 가지고 있습니다. 그건 아주 잘못입니다. 미들웨어가 호출 될 때마다 새로운 router.post() 핸들러가 등록되므로 절대 수행하지 않습니다. 이 코드로 무엇을 하려는지 설명하지 않으므로 올바른 코드를 추천 할 수는 없지만이 코드는 분명히 잘못되었습니다.

0

콜백이 누락되었습니다. security.js 파일을 아래에 대체하십시오.

exports.security_function= function(cb) { console.log("THIS IS NOT PRINTING EITHER"); cb(); };

관련 문제