2016-03-25 22 views
2

Ekspres rotaları düzenlemeye çalışıyorum. Ama çalışmak için basit bir kurulum almakta sorun yaşıyorum. Iki dosya, yönlendirme bilgisi olan api.js ve sunucuyu çalıştıran dizin.js var.Module.Exports Express için çalışmıyor

Ancak, bunu denediğimde localhost: 3000'e yanıt alamıyorum.

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 Ancak

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

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

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

, ben Buna api.js değiştirdiğinizde, çalışır:

api .js

var express = require('express'); 

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

module.exports = router; 

Neden dip api.js'nin neden en üstte olmadığı zaman işe yaramadığını anlamıyorum. Module.exports, her iki durumda da aynı ekspres yönlendiriciyi iade etmemeli mi?

cevap

1

fark ilk sürümde size yönlendirici kendisi ihraç olduğun yerde döner ikinci versiyonunda vs yönlendirici olduğu bir işlev ihraç ediyoruz olmasıdır.

İlk sürümde Express, dışa aktarılan işlevinizi çağırır, req ve res'u ileterek, isteği bir şekilde ele almayı bekler. Dışa aktarılan işlev, bir isteği işlemek için tasarlanmamıştır (sadece bir yönlendirici oluşturmak ve geri getirmek), böylece istek zaman aşımına uğrar.