如何在Express服务器启动时运行某个功能?

时间:2012-03-20 04:54:01

标签: javascript node.js express

我似乎无法弄清楚如何在服务器启动时让我的快速服务器运行一个简单的功能。调用函数在服务器启动时运行的适当位置在哪里,以及正确的语法?

我的路线文件中的功能为exports.myFunction = function() { code here};

我已经尝试将它作为routes.myFunction粘贴在app.configure块中。我尝试在路由中将其更改为myfunction() { code},然后在配置块中将其称为routes.myfunction(),也没有运气。该函数需要保留在包含我的路由的文件中,因为它会改变那里的一些全局变量。

我知道这是一些非常简单的语法,但我似乎找不到任何提示here或谷歌。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:29)

使用此活动:

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

说实话,express.createServer()返回的app只是http.Server,因此nodejs docs related to http.Server中描述的所有内容对于express和railwayjs都有意义。

答案 1 :(得分:12)

我会保持简单。在您调用app.listen(port)的模块中,只需在调用之前(或之后)调用启动函数即可。如果您需要将该函数驻留在一个完整的其他路径的单独模块中,只需将其导出,以便主server.js模块可以在启动时调用它。如果你仍然不满意,可以考虑在express / connect中的某个地方绑定一个事件监听器,虽然我不确定是否发出了明确的“startup”事件。

在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