Какие модули 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).