2012-03-20 16 views
11

サーバーの起動時にエクスプレスサーバーにシンプルな機能を実行させる方法がわかりません。サーバーの起動時に関数を呼び出すための適切な場所と適切な構文はどこですか?Expressサーバーの起動時に関数を実行する方法は?

私はroutes.myFunctionとしてapp.configureブロックでそれを貼り付ける試みたexports.myFunction = function() { code here};

として私routesファイル内の関数を持っています。私はmyfunction() { code}になるようにルートでそれを変更しようとしましたが、その後configureブロックでroutes.myfunction()と呼んでいます。関数はそこにいくつかのグローバル変数を変更するので、私のルートを含むファイルにとどまる必要があります。

私はそれがいくつかばかげて単純な構文だと知っていますが、私はヒントを見つけることができませんhereまたはGoogleで。助けてくれてありがとう!

答えて

22

このイベントを使用:

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

express.createServer(によって返さapp正直に言うとは)ちょうどhttp.Serverなので、すべてが急行し、railwayjsためnodejs docs related to http.Serverメイク感覚で説明しました。

+0

恐ろしく!これはまさに私が必要としたものです=) – kjb

+0

それは私のためには機能しません。ジェネレータの 'www'ファイルに既に' listening'イベントがあるという事実に関連していると思いますか? –

6

私はそれを簡単に保つでしょう。 app.listen(port)と呼ぶモジュールでは、その直前(または後)に起動関数を呼び出すだけです。他のルートでいっぱいになっている別のモジュールにその関数が存在する必要がある場合は、それをエクスポートして、メインのserver.jsモジュールが起動時に起動できるようにしてください。それでも満足できない場合は、明示的な「起動」イベントが発行されているとは思えませんが、express/connectのどこかでイベントリスナーをバインドすることを検討してください。 (あなたが明示サーバを起動どんなモジュールまたは)server.jsで

、次の操作を行います。

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

@Anatolyが言うようにあなたはまた、「聴く」イベントに特異的に結合することができます。 docs for the listening event are here

+0

まあ、まだ運がありません。私は関数が実際に実行されていることを示していませんが、エラーもありません。 =/ – kjb

+0

「main server.jsモジュールが起動時に起動できるようにエクスポートする」とはどういう意味ですか?私はexpress/javascriptで新しくなったことを許してください。 – kjb

+0

'listen'メソッドの非同期性のために動作しません。 – Anatoliy

関連する問題