2016-07-01 13 views
0

immer genannt Ein Endpunkt funktioniert gut, wenn sie direkt in meine server.js Datei hinzugefügt:Express Endpunkt nicht

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

aber in einem Versuch, die app ich eine Datei api.js von server.js wie folgt aufgerufen sind zu Refactoring:

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

und es sieht wie folgt aus:

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; 
} 

, aber wenn ich versuche, diesen Endpunkt zu treffen, "blockiert" der Req, da es keine Antwort gibt. Was mache ich falsch?

Antwort

-1

Sie haben für App globale Variable definieren und wie diese verwenden:

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

Ich bin nicht sicher, Globals ist die Antwort! – tommyd456

0

Weil von der Art wie du ex Portiert Ihren Router, müssen Sie routesApi aufrufen, wenn Sie es über .use() zum Middleware-Stack hinzufügen. Dies ist, wie das wie

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

aussehen könnte Obwohl Sie diese ganz Ihre api.js vermeiden kann, indem wie folgt aussehen:

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

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

module.exports = router; 

und der Code für den Server, da jetzt gleich bleiben kann , exportieren Sie eine Instanz des Router-Moduls.