Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js eventEmitter:侦听文件中的事件_Javascript_Node.js_Module_Eventemitter - Fatal编程技术网

Javascript node.js eventEmitter:侦听文件中的事件

Javascript node.js eventEmitter:侦听文件中的事件,javascript,node.js,module,eventemitter,Javascript,Node.js,Module,Eventemitter,刚刚开始使用Node.js,我有以下查询: 我的server.js文件中有以下javascript: ==================================================== function onRequest(request, response) { var pathname = url.parse(request.url).pathname; route(handle, pathname, response); console.log("Requ

刚刚开始使用Node.js,我有以下查询:

我的server.js文件中有以下javascript:

====================================================

function onRequest(request, response) {
  var pathname = url.parse(request.url).pathname;
  route(handle, pathname, response);
  console.log("Request for " + pathname + " received.");
}

var server = http.createServer(onRequest)
server.listen(8888);
console.log("Server started")
===============================================================

function onRequest(request, response) {
  var pathname = url.parse(request.url).pathname;
  route(handle, pathname, response);
  console.log("Request for " + pathname + " received.");
}

var server = http.createServer(onRequest)
server.listen(8888);
console.log("Server started")
我还有另一个js文件,我想在其中为服务器发出的“侦听”事件注册一个侦听器,或者为服务器发出的任何事件注册一个侦听器

我无法更改原始文件以导出服务器对象


有什么方法可以实现我的目标吗?

您可以像下面这样将服务器对象传递到其他模块中,或者在其他模块上公开一个函数,然后将其分配为父模块中的侦听器。两种方法都可以。这取决于您希望
.on
调用位于何处

// app.js

var otherModule = require('./other-module.js');

function onRequest(request, response) {

  var pathname = url.parse(request.url).pathname;
  route(handle, pathname, response);

  console.log("Request for " + pathname + " received.");
}

var server = http.createServer(onRequest);
otherModule.init(server);
server.listen(8888, function () {
  console.log("Server started");
}); // <-- Passing in this callback is a shortcut for defining an event listener for the "listen" event.
在上面的示例中,我为
listen
事件设置了两个事件侦听器。当我们将回调函数传递给
服务器时,第一个是注册的。这只是在('listen',…)
上执行服务器的快捷方式。第二个事件处理程序显然是在other-module.js中设置的:)