Какие модули Node.js 'требуют' автоматически?

Быстрый вопрос, но один из них я неожиданно не смог найти ответ с помощью немного Googling... когда я использую интерактивный интерпретатор node, я могу набирать имена в основном всех основных модулей и видеть их вывод как объекты на консоли... однако я понимаю, что основные модули не все включены как это по умолчанию при запуске .js файла.

Может ли кто-нибудь прояснить это для меня? Вся помощь была оценена.

Ответ 1

Начиная с 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 все, что вы хотите использовать.

Ответ 2

Вам нужно использовать все модули, которые вы хотите использовать в node. В node.js не входит ничего, кроме функций, включенных в спецификацию javascript (спецификация ECMA).

Чтобы получить доступ к основным библиотекам, вам необходимо их потребовать. Например, если вам нужен доступ к функции создания сервера, вам необходимо сделать следующее:

var http = require('http');

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

Вы также можете сделать это в интерактивной консоли. Это присваивает модуль переменной и начинает ее использовать впоследствии.

Ответ 3

В настоящий момент есть пакет npm, который обертывает файл repl.js и дает вам список более дружелюбно.

builtin-modules

Я полагаю, что это может быть интересно быстро получить этот список в сценарии наличия другой версии node (nvm), имея эти версии разных модулей ядра (что на самом деле происходит с разными версиями AngularJS).