Node.js Express路由器无法正常工作

代码进行中

我知道以前曾在这里提出过这个问题,但是我找不到通过他们的解决方案,所以我必须自己问。

这是我的app.js代码

var express = require('express');                               
var exphbs = require('express-handlebars');
var router = express.Router();                                  


var paymentCampaigns = require('./routes/paymentCampaigns');

var app = express();

app.use('/payment-campaigns', paymentCampaigns);

//create server and listen to the port
http.createServer(app).listen(app.get('port'), function(){
    winston.log('info', 'The server has started');
});

    app.use(function(req, res, next){
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

module.exports = app;

这是paymentCampaigns.js的代码

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

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

router.get('/pending', function(req, res){
    res.send('hello this is pending');
});

module.exports = router;

每当我键入localhost:8000 / payment-campaigns / pending时,它都会带我到404错误页面。/ add路由将我带到add_campaign页面。我究竟做错了什么?我那里还有其他路线,除了这一条以外,其他所有路线都工作正常。

代码进行中

问题出在我的代码中定义路由的方式。挂起的路由是在末尾定义的,在它之前还有另一个带有param的get路由。

所以像这样:

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

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

router.get('/:campaignId', function(req,res) {
    //get the campaign detail using the campaignId
});

router.get('/pending', function(req, res){
    res.send('hello this is pending');
});

module.exports = router;

我必须在/:campaignId路由之前移动所有我唯一的“获取”路由,然后它开始工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章