2016-07-01 3 views
0

конечной точки работает нормально, если добавляются непосредственно к моему server.js файлу:Экспресс конечной точки не вызывалось

app.post('/test', function(req,res) { 
    res.status(200).send({"message" : "OK"}); 
}); 

но в попытке реорганизовать приложение я включаю файл с именем api.js из server.js так:

var routesApi = require('./server/routes/api'); 
app.use('/v1', routesApi); 

и это выглядит следующим образом:

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

module.exports = function() { 
    router.post('/test', function(req, res){ 
    res.status(200).send({"message" : "OK"}); 
    }); 

    return router; 
} 

, но если я попытаюсь и ударил эту конечную точку, req «киосков», поскольку ответа нет. Что я делаю не так?

ответ

-1

вы должны определить глобальную переменную для приложения и может использовать так:

api.js

exports.allRoutes=function() { 

var version1="v1"; 

app.post('/'+version1+'/test', function(req, res){ 
res.status(200).send({"message" : "OK"}); 
}); 

} 

app.js

global.app = express(); 

var all_routes = require('./server/routes/api'); 

all_routes.allRoutes(); 

var server = http.createServer(app); 

server.listen(app.get('port'), function(req,res){   
    console.log('Express server listening on port ' + app.get('port'));  
}); 
+0

Я не уверен, что глобальный ответ - это ответ! – tommyd456

0

Потому что о том, как вы портирован ваш маршрутизатор, вам необходимо вызывать routesApi при добавлении его в стек промежуточного программного обеспечения через .use(). Вот как это может выглядеть

app.use('/v1', routesApi()); 

Хотя вы можете избежать этого в целом, изменив api.js выглядеть следующим образом:

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

router.post('/test', function(req, res){ 
    res.status(200).send({"message" : "OK"}); 
}); 

module.exports = router; 

и код сервера может оставаться неизменным с предприятием , вы экспортируете экземпляр модуля Router.

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