11

快速的问题,但令人惊讶的是,我通过谷歌搜索找不到答案......当我使用node交互式解释器时,我可以输入基本上所有核心模块的名称并将它们作为对象输出到控制台上。 ..但是,我知道在运行 .js 文件时,默认情况下并非所有核心模块都包含在内。

谁能帮我解决这个问题?所有帮助表示赞赏。

4

3 回答 3

20

从 Node 0.8 开始,repl.js 定义了一个内置库列表,当您在 REPL 上键入它们的名称时将自动需要这些库:

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

您需要要求所有要在节点中使用的模块。Node.js 中只包含 javascript 规范(ECMA 规范)中包含的函数。

要访问核心库,您需要它们。例如,如果您需要访问创建服务器功能,您需要执行以下操作:

var http = require('http');

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

您也可以在交互式控制台中执行此操作。那就是将模块分配给一个变量,然后开始使用它。

于 2012-07-06T14:37:14.317 回答
0

目前有一个 npm 包包含 repl.js 文件,并以更友好的方式为您提供列表。

内置模块

我想在具有不同节点版本(nvm)的场景中快速获取该列表可能会很有趣,这些版本具有不同的核心模块(实际上发生在不同版本的 AngularJS 中)。

于 2016-05-05T10:04:54.263 回答