2015-09-06 47 views
0

如何使用多个路由器文件使用快速框架?如何使用多个路由器文件

在我app.js,我有以下代码:

var controller = require('./controller/index'); 
var healthController = require('./controller/health/'); 

app.use('/', controller); 
app.use('/health', healthController); 

和控制器/ index.js:

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

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index'); 
}); 

module.exports = router; 

而且health.js:

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

/* GET health confirmation. */ 
router.get('/health', function(req, res, next) { 
    res.send('OK'); 
}); 

module.exports = router; 

当我打了http://localhost:8000/,我得到正确的页面没有任何问题,但是,http://localhost:8000/health导致404错误。

在此先感谢。

+1

假设“health.js”驻留在“控制器”目录中,可能它只是一个错字问题? ''var healthController = require('./ controller/health /');''有一个尾部斜线(/)。删除它会飞?所以它变成''var healthController = require('./controller/health');'' – tiblu

+0

@tiblu你能否发布这个答案,以便我可以接受它为你的功劳? :-) – Srikrishnan

+0

好的,不客气! – tiblu

回答

2

假设“health.js”驻留在“控制器”目录中,可能只是一个错字问题? var healthController = require('./controller/health/');有一个尾部斜线(/)。删除它会飞?所以它变成var healthController = require('./controller/health');

1

参见How to include route handlers in multiple files in Express?

导出可以通过引用原始快速应用程序“启动”的匿名函数。

./controller/index.js

module.exports = function(app) { 

    /* GET home page. */ 
    app.get('/', function(req, res, next) { 
     res.render('index'); 
    }); 
}; 

./controller/health.js

module.exports = function(app) { 

    /* GET health confirmation. */ 
    app.get('/health', function(req, res, next) { 
     res.send('OK'); 
    }); 
}; 

./app.js

var app = require('express')(); 

var controller = require('./controller/index'); 
var healthController = require('./controller/health'); 

controller(app); 
healthController(app); 
1

您的s单节点应用程序必须具有单个路由器对象,路由器对象表示需要唯一端口的快递服务器。 因此,您应该在您的app.js中将路由器对象传递给所有路由器文件。

代码就会像 -

app.js

var express = require('express'); 

var router = express.Router(); 

var controller = require('./controller/index'); 
var healthController = require('./controller/health/'); 

controller(router); 
healthController(router); 

index.js

module.exports = function(router) { 
    router.get('/', function(req, res, next) { 
     res.render('index'); 
    }); 
} 

health.js

module.exports = funtion(router) { 
    router.get('/health', function(req, res, next) { 
     res.send('OK'); 
    }); 
} 
相关问题