将函数传递给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