尝试使用Nodejs和Expess将对象传递给外部路由文件

我有我的nodeapp和一个外部路由文件。 我正在尝试将对象clientMap传递给外部路由器

当我尝试从示例传递使用语法

app.use('/api', apiRoutes)(clientMap); 

我总是得到错误

node_modules \ express \ lib \ router \ index.js:140 var search = 1 +

req.url.indexOf( '?');

TypeError:无法在Function.handle中调用未定义的方法“indexOf”

这是我目前的(只是片段导致这是一个大的应用程序),这是行不通的

app.js

 var app = express(); var http = require('http').Server(app); var apiRoutes = require('./routes/apiRoutes'); app.use('/api', apiRoutes)(clientMap); 

apiRoutes.js

 module.exports = (function (clientMap) { var router = express.Router(); router.use(function (req, res, next) { }); router.get('/userlist', function (req, res, next) { }); return router; })(); 

我也尝试过,并得到相同的错误

 app.use('/api', apiRoutes(clientMap)); 

你应该传递给apiRoutes ,而不是app.use

 app.use('/api', apiRoutes(clientMap)); 

您也想要将一个函数作为apiRoutes导出,而不是将其称为IIFE:

 module.exports = function (clientMap) { var router = express.Router(); router.use(function (req, res, next) { }); router.get('/userlist', function (req, res, next) { }); return router; };