将函数传递给Router-Functions模块
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”
你的架构有问题 这样的做法有点不对劲。 如果您需要一个模块中定义的函数存在于另一个模块中,则必须将其导出到单独的文件中。 即:
// 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中定义函数,那么你必须以某种方式传递它。 例如作为函数的参数
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); }
你必须调用函数如Router_Functions.aFunction(X.xFunction(user))来传递xFunction