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

Спасибо. Это было глупо со мной. –

Смежные вопросы