Javascript 为什么这个模块不打印
这是我的app.js: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
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中函数后面的右括号是什么意思?你有没有收到任何错误?