Node.js 尝试使用Nodejs和Expess将对象传递到外部路由文件

Node.js 尝试使用Nodejs和Expess将对象传递到外部路由文件,node.js,express,Node.js,Express,我有我的nodeapp和一个外部路由文件。 我正在尝试将对象clientMap传递到外部路由器 当我尝试使用示例中的语法传递时 app.use('/api', apiRoutes)(clientMap); 我总是犯错误 node\u modules\express\lib\router\index.js:140 var search=1+ 请求url.indexOf(“?”) TypeError:无法调用未定义的方法“indexOf” 在Function.handle 这就是我目前使用它的方式

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

当我尝试使用示例中的语法传递时

app.use('/api', apiRoutes)(clientMap);
我总是犯错误

node\u modules\express\lib\router\index.js:140 var search=1+

请求url.indexOf(“?”)

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

这就是我目前使用它的方式(只是一些片段,因为这是一个大应用程序),但它不起作用

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

您应该传递到
apirouts
,而不是
应用程序。使用

app.use('/api', apiRoutes(clientMap));
您还希望将函数导出为
apirouts
,而不是将其称为IIFE:

module.exports = function (clientMap) {

    var router = express.Router();
    router.use(function (req, res, next) {

    });

    router.get('/userlist', function (req, res, next) {
    });


    return router;

};

谢谢你的回复。我已经更新了原来的问题。我仍然犯同样的错误我想我看到了另一个问题。更新。