尝试使用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; };