Javascript 为什么这个模块不打印

Javascript 为什么这个模块不打印,javascript,node.js,Javascript,Node.js,这是我的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 listeni

这是我的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_函数打印某些内容时,不会打印任何内容。然后这个函数返回的结果我也希望它打印出来,但它显然没有打印,因为安全函数似乎没有运行。

您缺少回调。请将security.js文件替换为以下内容

exports.security\u function=functioncb{ console.log这也不是打印; cb;
};

您的代码很混乱。您已将security_函数定义为不带参数的函数。它应该简单地称为security.security\u函数,如下所示:

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处理程序,这绝不是您想要做的。你没有解释你试图用这段代码做什么,所以我不能推荐正确的代码,但这段代码显然是错误的。

security.js中函数后面的右括号是什么意思?你有没有收到任何错误?