2016-09-28 122 views
0

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

 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"); 
     }) 
+0

您需要将路由器注册到应用程序。 – Sikorski

+0

你的意思是var router = express.Router();在app.js –

回答

1

您必须先注册与应用路由器如下图所示

app.use('/',router); 

参考express documentation

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

1

你只需要在路由器对象附加到应用对象:

app.use('/', router); 

第一个参数是基本URL。

+0

谢谢。这真是愚蠢的我。 –