node.js - 将函数传递给 Router-Functions 模块

标签 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'

最佳答案

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

// 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);
}

关于node.js - 将函数传递给 Router-Functions 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18682612/

相关文章:

javascript - 动态调用router函数

Javascript无限循环更新实体

javascript - 根据属性值对 JSON 数组进行排序

mysql - Node Express MySql Sql 查询不起作用

javascript - 在 nodejs 公用文件夹中公开 nodejs 库

javascript - Nodejs Express Mongoose 连接到数据库错误

javascript - 纪元太精确

ios - 为推送通知存储 token

node.js - Docker 容器文件被主机卷共享覆盖

node.js - 无需重新启动应用程序即可重新加载 Express 子应用程序