NodeJs + ExpressJS:路由器级中间件无法接收请求

时间:2016-09-28 13:14:23

标签: javascript node.js express

我正在对我的服务器进行REST调用。现在,当我设计我的代码来处理应用程序级别的路由时,它的工作没有任何问题。但是,当我使用路由器级中间件处理它时,它无法正常工作,

     var https = require("https");
        var express = require('express');
        var app = express();
        var bodyParser = require('body-parser');
        var cookieParser = require('cookie-parser');
        var path         = require('path');

        var routes = require('./server');  //require server directory

        app.use(bodyParser.json());
        app.use(bodyParser.urlencoded({ extended: false }));
        app.use(cookieParser());
        app.set('views', path.join(__dirname, 'views'));
        app.use(express.static(path.join(__dirname, 'public')));
        app.get('/', function(req, res, next) {
            res.sendFile(path.join(__dirname, 'views', 'index.html'));
        });
        app.listen(3000);
        module.exports = app;

这是我的服务器目录,我有一个文件index.js 当我尝试使用路由器处理请求时,它没有接受请求。我可以要求页面到我的app.js,但只是路由器的东西不起作用。

    var https = require("https");
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var gh = require('parse-github-url'); // use to break the url user provides into various parts
var moment = require('moment'); // for Parse, validate, manipulate, and display dates in JavaScript.
var router = express.Router();
var Promise = require('bluebird');
var _ = require('underscore-node');

router.post('/click', function(req, res){
    console.log("ewewew");
 });


module.exports = router;

当我继续尝试在我的应用程序app.js中处理请求时,它工作正常。 对于Eg:

 // If I keep it here it in app.js its working fine.
       app.post('/click',function(){
            console.log("dwfe");
        })

2 个答案:

答案 0 :(得分:1)

您必须使用app注册路由器,如下所示

app.use('/',router);

参考express documentation

express.Router()只创建另一个路由器,一个孤立的中间件实例。必须将其添加到app中间件堆栈才能实际调用它。

答案 1 :(得分:1)

您只需将路由器对象附加到app对象:

app.use('/', router);

第一个参数是基本网址。