具有索引的路由的expressjs和模块导出

时间:2017-05-17 17:41:09

标签: node.js express module routes

我正在尝试使用index.js文件将我的大脑包裹起来,以便在Express-app中导出我的路线。

./ app.js

const server = require('express'),
      app    = server(),
      port   = process.env.PORT

require('./routes/index')(app)
app.listen(port)

./路由/ index.js

function routes(app) {
    require('./test')(app)
}
module.exports = routes

./路由/ test.js

function test(app) {
    app.get('/', function (req, res) {
        console.info('test')
        res.end('Hello, World!')
    })
}

module.exports = test

现在,当然,当我执行./app.js时,我收到错误告诉我require( ... ) is not a function on ./routes/index.js:2

但我似乎无法围绕这个逻辑包围我的大脑。不是我的错误的原因,而是在将app传递给模块时如何在此结构中将模块绑定在一起。

这种结构背后的想法(如果不是很明显)是创建一个系统,通过在属于每个模块的索引文件中添加和删除模块,可以在应用程序中添加和删除模块,然后只需要每个模块集群的索引(例如路由)。

1 个答案:

答案 0 :(得分:0)

出于某种原因导出命名函数,如

function someName(parameter) {
    require('./whatever')(parameter)
}
module.exports = someName

不会工作......

但是,导出匿名函数确实有效:

module.exports = function (parameter) {
    require('./whatever')(parameter)
}