2015-11-11 30 views
0

我用快递4的新路由器试验,并想知道人们会如何去下面做...Router.use()需要中间件的功能,但有一个对象

我做了一个名为文件app.js在包含路线的文件夹,基本做法是:

var express = require('express'); 
var router = express.Router(); 

module.exports = (function() { 

    router.get('/testindex', function(req, res) { 
     res.render('testindex'); 
    }) 

    return router; 

})(); 

在我server.js文件可正常工作......

var appRouter = require('./routes/app'); 
var apiRouter = require('./routes/api/v1.js'); 
app.use('/', appRouter); 
app.use('/api/v1',apiRouter); 

我希望做这样的事情,但我得到了我在标题中提到的错误...

var router = { 
    api: { 
     v1: require('./routes/api/v1'), 
     v2: (...) 
    }, 
    app: require('./routes/app') 
}; 

app.use('/api/v1', router.api.v1); 
app.use('/api/v2', router.api.v2); 
app.use('/', router.app); 

什么我不理解?

+0

它抱怨哪条路? – Brandon

回答

0

当试图重现您的问题,还有就是如果我删除了这种说法没有任何问题:

app.use('/api/v2', router.api.v2); 

因此,有可能出错了,你所定义的v2财产你没有割肉出局的方式(在你的问题)。

+0

谢谢萨姆。其实,v2只是在那里沟通,我会想以类似的方式链接到另一个版本。实际的代码没有包含v2的两行。既然你提到在删除它时没有问题,那么我会回去仔细检查我的代码,并在某处寻找缺失的字符。实际上,我从源代码中重新输入了一些内容,而不是在复制粘贴时使其看起来不错。 –

相关问题