Как запустить функцию при запуске Express-сервера?

Я не могу понять, как заставить мой экспресс-сервер запускать простую функцию при запуске сервера. Где подходящее место для вызова функции для запуска при запуске сервера и соответствующего синтаксиса?

У меня есть функция в файле маршрутов как exports.myFunction = function() { code here};

Я попытался вставить его в блок app.configure как route.myFunction. Я попытался изменить его в маршрутах, чтобы просто быть myfunction() { code}, а затем называть его в блоке configure как routes.myfunction(), и там не повезло. Функция должна оставаться в файле, содержащем мои маршруты, поскольку он изменяет там некоторые глобальные переменные.

Я знаю, это какая-то глупо простая синтаксическая вещь, но я не могу найти никаких намеков здесь или на google. Большое спасибо за любую помощь!

Ответ 1

Используйте это событие:

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

Честно говоря, app, возвращаемый express.createServer(), просто http.Server, поэтому все, описанное в nodejs docs, связанных с http.Server имеет смысл для выражения и railwayjs.

Ответ 2

Я бы сохранил это просто. В модуле, где вы вызываете 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 для прослушивания здесь.