将功能传递给路由器功能模块

时间:2013-09-08 10:18:40

标签: node.js express

Routes.js包含以下代码行:

X = {};
X.xFunction(user) { 
  // some code here 
  // console.log(user.Name);
}       
var Router_Functions = require('/Router_Functions');

app.get('/', Router_Functions.aFunction)

Router_Functions.js

exports.afunction = function (req, res) {

   xFunction(req.session.user);

}

此处,错误xFunction未定义。但在这种情况下,如何将函数X.xFunction()从'routes.js'传递给'Router_Functions.js'

2 个答案:

答案 0 :(得分:2)

您的架构有问题。这样的做法有点不对劲。如果您需要在一个模块中定义的函数存在于另一个模块中,则必须将其导出到单独的文件中。即:

// xFunction module
var X = {};
X.xFunction(user) { 
  // some code here 
  // console.log(user.Name);
}
module.exports = X;

然后在* Router_Functions.js *

exports.afunction = function (req, res) {

   var X= require("xFunction.js");
   X.xFunction(req.session.user);

}

如果你真的想在 Routes.js 中定义函数,那么你必须以某种方式传递它。例如,作为aFunction

的参数
app.get('/', function(req, res, next) {
   Router_Functions.aFunction(req, res, xFunction);
});

// Router_Functions.js
exports.aFunction = function (req, res, xFunction) {
   xFunction(req.session.user);
}

答案 1 :(得分:-1)

你必须在调用函数时传递一个函数,如Router Functions.a Function(X.xFunction(user))