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

kjb*_*kjb 21 javascript node.js express

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

我的路由文件中的函数为 exports.myFunction = function() { code here};

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

我知道这是一些愚蠢的简单语法,但我似乎无法在这里或谷歌上找到任何提示.非常感谢任何帮助!

Ana*_*liy 33

使用此活动:

app.on('listening', function () {
    // server ready to accept connections here
});
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*ons 14

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

在server.js(或您启动Express服务器的任何模块)中,执行以下操作:

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

你也可以像@Anatoly所说的那样绑定到"监听"事件.听力活动文档在这里.