我写了我的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;
但是,似乎没有通过中间件功能。
答案 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;