2016-09-28 98 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

謝謝。這真是愚蠢的我。 –