11

簡単な質問ですが、驚くべきことに、少しグーグルで答えを見つけることができませんでした...nodeインタラクティブインタープリターを使用すると、基本的にすべてのコアモジュールの名前を入力して、コンソールにオブジェクトとして出力されるのを見ることができます。 ..ただし、.jsファイルを実行する場合、デフォルトでコアモジュールがすべてこのように含まれているわけではないことを理解しています。

誰かが私のためにこれを片付けることができますか?すべての助けに感謝します。

4

3 に答える 3

20

Node 0.8 以降、REPL で名前を入力すると自動的に必要になるrepl.js 組み込みライブラリのリストを定義します。

exports._builtinLibs = ['assert', 'buffer', 'child_process', 'cluster',
  'crypto', 'dgram', 'dns', 'events', 'fs', 'http', 'https', 'net',
  'os', 'path', 'punycode', 'querystring', 'readline', 'repl',
  'string_decoder', 'tls', 'tty', 'url', 'util', 'vm', 'zlib'];

...

if (exports._builtinLibs.indexOf(cmd) !== -1) {
  var lib = require(cmd);
  if (cmd in self.context && lib !== self.context[cmd]) {
    self.outputStream.write('A different "' + cmd +
                            '" already exists globally\n');
  } else {
    self.context._ = self.context[cmd] = lib;
    self.outputStream.write(self.writer(lib) + '\n');
  }
  self.displayPrompt();
  return;
}

これは具体的には の関数でありrepl.js、独自の Node.js プログラムを作成するときにはまったく機能しません。そこでは、require使用したいものを具体的に指定する必要があります。

于 2012-07-06T15:51:45.960 に答える
1

ノードで使用するすべてのモジュールをrequireする必要があります。Node.jsにはjavascript仕様(ECMA仕様)に含まれる機能以外は含まれていません。

コア ライブラリにアクセスするには、それらを要求する必要があります。たとえば、サーバー作成機能にアクセスする必要がある場合は、次の手順を実行する必要があります。

var http = require('http');

http.createServer(function(req, res) {
   console.log(req);
}).listen(3000);

これは、インタラクティブ コンソールでも実行できます。つまり、モジュールを変数に割り当て、後で使用を開始します。

于 2012-07-06T14:37:14.317 に答える