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

时间:2015-12-19 17:26:37

标签: node.js express

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

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

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

我总是得到错误

  

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

     

req.url.indexOf( '?');

     

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

这是我目前的方式(只是片段因为这是一个很大的应用程序),这是行不通的

app.js

module.exports = (function (clientMap) {

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

    });

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


    return router;

})();

apiRoutes.js

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

我也试过并得到同样的错误

valve.ValveId as valve.Brand + ' ' + valve.Model + ' ' + valve.Notes for valve in valves

1 个答案:

答案 0 :(得分:2)

您应该转到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;

};