1

私は、Nodejsに依存するパッケージであるr-nodeを実験しています。パッケージ自体は少し古く、2010年代半ばの古いファイルであるnode_eventsに依存しています。ビルド段階では、次のように文句を言います。

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年前にNodejsから削除されました:https ://github.com/joyent/node/commit/4ef8f06fe62edb74fded0e817266cb6398e69f36#src/node_events.h

私は背景が何であるか疑問に思っています-ノードjsの人々がこの特定のファイルを削除したのはなぜですか、そしてパッケージライターはこれに追いつくためにどのように彼らの終わりを更新しますか?ありがとう。

4

1 に答える 1

0

node_events。{h、cc}が存在するときのnode.jsソースコードを理解している限り、プラットフォームはCで記述されたエミッターを使用していました。

var EventEmitter = exports.EventEmitter = process.EventEmitter

しかし、彼らは、JavaScriptコードから直接イベントエミッターを作成する方がはるかに優れていることに気づきました。

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

lib / 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 に答える