这是我的app.js:
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:
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");
});
当我调用/ api / sameroute url时它会命中路径,因为我可以看到第一个console.log正在打印,但是当我希望security_function打印时,什么都没有打印出来。然后这个函数带回来的结果我也想要它打印,但它显然不是打印,因为security_function似乎甚至没有运行。
答案 0 :(得分: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()
处理程序,这绝不是您想要做的。您没有解释您尝试使用此代码执行的操作,因此我无法推荐正确的代码,但此代码显然是错误的。
答案 1 :(得分:0)
你错过了回调。请替换下面的security.js
文件。
exports.security_function= function(cb) {
console.log("THIS IS NOT PRINTING EITHER");
cb();
};