2012-03-20 26 views
11

Ben sunucu başlatıldığında basit bir işlevi çalıştırmak için ekspres sunucuyu nasıl anlamaya görünüyor olamaz. Sunucu başlangıçta çalışacak bir işlevi çağırmak için uygun yer ve uygun sözdizimi nerede?Nasıl bir işlevi çalıştırmak için?

ben routes.myFunction olarak app.configure bloğunda sıkıştırmadığınızı denedim

exports.myFunction = function() { code here}; olarak benim rotalara fonksiyon dosya var. Sonra routes.myfunction() olarak yapılandırmak bloğunda, hiçbir şans ya da çağırarak, sadece myfunction() { code} olmak rotalara değiştirmeyi denedim. Buradaki bazı global değişkenleri değiştirdiğinden, işlevlerim rotalarımı içeren dosyada kalmalıdır.

Bunun aptalca basit bir sözdizimi olduğunu biliyorum, ancak hiçbir ipucu here veya google'da bulamıyorum. Herhangi bir yardım için çok teşekkürler!

cevap

22

kullanın bu etkinlik:

app.on('listening', function() { 
    // server ready to accept connections here 
}); 

express.createServer tarafından döndürülen app Dürüst olmak gerekirse() sadece http.Server, bu yüzden her şey ekspres ve railwayjs için nodejs docs related to http.Server yapmak anlamda tanımlamıştır.

+0

Awesome! Bu tam olarak ihtiyacım olan şey =) – kjb

+0

Benim için çalışmıyor. Ben jeneratörden 'www' dosya zaten bir' listening' olayı sahip olmasından ilgili olduğunu düşünüyorsun? –

6

Basit kalırdım. app.listen(port)'u aradığınız modülde, başlatma işlevinizi hemen önce (veya sonrasında) arayın. Başka yolları dolu ayrı bir modülünde yer alan bu işlevi gerekiyorsa, sadece o kadar ana server.js modül başlangıçta çağırabilirsiniz ihracat. Bununla hala memnun değilseniz, açık bir "başlangıç" olayının yayıldığından emin olmamasına rağmen, express/connect'in bir yerinde bir olay dinleyicisini bağlamayı düşünebilirsiniz. (Eğer ekspres sunucuyu başlatmak ne olursa olsun modül veya) server.js ise

Bunu yapmak:

var myRoutes = require("./myroutes"); 
var app = express.createServer(); 
... 
app.listen(8080, "127.0.0.1", function() { 
    myRoutes.myFunction(); 
}); 

@Anatoly dediği gibi de "dinleme" olayı bağlanabilir. docs for the listening event are here.

+0

hmm, hala hayır şans. Fonksiyonun gerçekten çalıştırıldığına dair herhangi bir işaret alamıyorum, ama ya hata yok. =/ – kjb

+0

siz "o kadar ana server.js modülü başlangıçta çağırabilirsiniz dışa" ile ne demek istiyorsunuz? Ben Çünkü listen' yöntemin 'eşzamansız doğanın işe yaramaz ekspres/javascript – kjb

+0

ile yeniyim için beni affet. – Anatoliy

İlgili konular