2016-03-25 20 views
2

Ich versuche, Routen in Express zu organisieren. Aber ich habe Probleme damit, ein einfaches Setup zu erstellen. Ich habe zwei Dateien, api.js, die die Routing-Informationen hat, und index.js, die den Server ausführt.Module.Exports funktioniert nicht für Express

Wenn ich dies jedoch versuche, bekomme ich keine Antwort auf localhost: 3000.

api.js

var express = require('express'); 

module.exports = function() { 
    var router = express.Router(); 
    router.get('/', function(req, res) { 
    res.send('im the home page!'); 
    }); 
    return router; 
} 

index.js

var express = require('express'); 
var app = express(); 

var router = require('./api'); 

app.use('/',router); 
app.listen(3000); 
console.log('Listening on port 3000!'); 

Allerdings, wenn ich api.js Um dies zu ändern, es funktioniert:

api .js

var express = require('express'); 

var router = express.Router(); 
router.get('/', function(req, res) { 
    res.send('im the home page!'); 
}); 

module.exports = router; 

Ich verstehe nicht, warum die untere api.js funktioniert, wenn die oberste nicht funktioniert. Sollten modul.exports in beiden Fällen den gleichen Express Router zurückgeben?

Antwort

1

Der Unterschied ist, dass in der ersten Version eine Funktion exportieren, dass kehrt den Router vs der zweiten Version wo Sie Export der Router selbst.

In der ersten Version ruft Express Ihre exportierte Funktion auf und übergibt sie req und res, erwartet, dass es irgendwie die Anforderung behandelt. Die exportierte Funktion ist natürlich nicht dafür ausgelegt, eine Anfrage zu bearbeiten (es wird nur ein Router erstellt und zurückgegeben), so dass die Anfrage abläuft.

Verwandte Themen