快速的問題,但我驚訝地找不到一個谷歌搜索的答案...當我使用node
交互式解釋器,我可以輸入基本上所有核心模塊的名稱,並看到他們作爲對象輸出到控制檯......但是,我知道在運行.js文件時,默認情況下核心模塊並不是全部包含在內。Node.js自動需要哪些模塊?
任何人都可以爲我清除它嗎?所有幫助讚賞。
快速的問題,但我驚訝地找不到一個谷歌搜索的答案...當我使用node
交互式解釋器,我可以輸入基本上所有核心模塊的名稱,並看到他們作爲對象輸出到控制檯......但是,我知道在運行.js文件時,默認情況下核心模塊並不是全部包含在內。Node.js自動需要哪些模塊?
任何人都可以爲我清除它嗎?所有幫助讚賞。
在節點0.8開始,repl.js
defines a list of built-in libraries這將是automatically required當你在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
任何你想使用的東西。
您需要在節點中要求使用所有模塊。 Node.js中沒有包含javascript規範(ECMA規範)中包含的函數。
要訪問核心庫,您需要它們。例如,如果你需要訪問你需要做以下的創建服務器功能:
var http = require('http');
http.createServer(function(req, res) {
console.log(req);
}).listen(3000);
你也可以做到這一點的交互式控制檯。這是將模塊分配給一個變量,然後開始使用它。
問題在於REPL,REPL默認提供核心庫。 – 2014-02-03 10:02:15
目前有一個npm包裹,它包裹着repl.js文件,並以更友好的方式給你列表。
我想這可能是有趣的,快速獲得具有不同節點版本(NVM)的情況下該列表中,擁有這些不同版本的核心模塊(實際與不同版本的AngularJS的發生)。
在'.js'腳本中,您必須明確要求您使用的所有模塊。 REPL中的這種行爲僅僅是爲特定環境/用例提供的便利。 – 2012-07-06 14:35:52
我想指出的是,有些東西,比如'console',可能感覺像是一個自動需要的模塊,但實際上只是全局的。有幾個這些。 http://nodejs.org/api/globals.html – joshuapoehls 2012-07-06 14:58:20