Nodejs Express:separete文件中的路由

时间:2017-01-28 10:25:57

标签: node.js express

我写了我的app.js,包括主文件中的所有路径,一切运行良好。我的目标是通过在不同的文件中移动路线使项目更加清晰,但它不起作用。 我正在传递一个对象而不是中间件函数,我不知道如何以正确的方式修复它。

所以这是我的app.js文件:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var morgan = require('morgan');
var mongoose = require('mongoose');
var myRoutes = require('./app/routes/myRoutes.js');

...

//parser for getting info from POST and/or URL parameters
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//for log requests to console
app.use(morgan('dev'));

app.use('/myRoutes', myRoutes);

app.get('/',function(req,res){
    res.end('Welcome Page!');
});

//Server Start
app.listen(port);
console.log('server start at port ' + port);

app / routes / myRoutes.js包含以下代码:

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

myRoutes.get('/users',function(req,res){
...
});

myRoutes.post('/setup',function(req,res){
    ...
});

myRoutes.post('/remove', function(req,res){
    ...
});

module.export = myRoutes;

我也试过这个:

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

myRoutes.route('/')
    .get(function(req, res, next){
        res.end('myRoute Get');
    })
    .post(function(req, res, next){
        res.end('myRoute Post');
    });

module.export = myRoutes;

但是,似乎没有通过中间件功能。

2 个答案:

答案 0 :(得分:2)

我的第二个选项代码

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

myRoutes.route('/')
    .get(function(req, res, next){
        res.end('myRoute Get');
    })
    .post(function(req, res, next){
        res.end('myRoute Post');
    });

module.export = myRoutes;

工作正常!我只是以错误的方式写它

module.export = myRoutes;

不是

module.exports = myRoutes;

答案 1 :(得分:0)

嗨,这是关于这个问题的更多附加提示。你主js文件肯定需要加载很多路由,我发现导入所有这些是很多工作。而是使用require-dir模块加载所有路径,如

const loader = require('require-dir');
var app = express();
var routes = loader('./routes');
for (route in routes){
  app.use("/"+route,routes[route]);
}

不用说在routes文件夹中定义所有路由并在每个路由中导出Router模块,如

var router = express.Router();

router.get(....);

module.exports = router;