1

我正在试验 r-node,一个依赖 Node js 的包。软件包本身有点过时,依赖于 node_events,这是 2010 年代中期的一个旧文件。在构建阶段,它抱怨以下内容:

src/binding.cc:24:10: fatal error: 'node_events.h' file not found
#include <node_events.h>
         ^
1 error generated.
make[1]: *** [src/binding.o] Error 1
make: *** [server] Error 2

node_events 大约在 2 年前从 Node js 中删除:https ://github.com/joyent/node/commit/4ef8f06fe62edb74fded0e817266cb6398e69f36#src/node_events.h

我想知道背景是什么——为什么节点 js 的人删除了这个特定的文件,以及包编写者如何更新他们的结尾以跟上这个。谢谢。

4

1 回答 1

0

据我所知,node.js 源代码存在时 node_events.{h,cc} 该平台使用了一个用 C 编写的发射器:

var EventEmitter = exports.EventEmitter = process.EventEmitter

但他们意识到直接从 javascript 代码创建事件发射器会更好:

var EventEmitter = NativeModule.require('events').EventEmitter;

库/events.js:

function EventEmitter() {
      this.domain = null;
      if (exports.usingDomains) {
        // if there is an active domain, then attach to it.
        domain = domain || require('domain');
        if (domain.active && !(this instanceof domain.Domain)) {
          this.domain = domain.active;
        }
      }
      this._events = this._events || null;
      this._maxListeners = this._maxListeners || defaultMaxListeners;
    }
    exports.EventEmitter = EventEmitter;

因此,如果您使用的包使用旧的事件发射器,只需从您想要更新并重新编译的源中删除包含(以及所有 deps)。#include <node_events.h>

于 2013-01-17T20:57:46.967 回答