# File System
~~~
穩(wěn)定度: 3 - 穩(wěn)定
~~~
文件系統(tǒng)模塊是一個(gè)簡(jiǎn)單包裝的標(biāo)準(zhǔn) POSIX 文件 I/O 操作方法集。您可以通過(guò)調(diào)用`require('fs')`來(lái)獲取該模塊。文件系統(tǒng)模塊中的所有方法均有異步和同步版本。
文件系統(tǒng)模塊中的異步方法需要一個(gè)完成時(shí)的回調(diào)函數(shù)作為最后一個(gè)傳入形參。 回調(diào)函數(shù)的構(gòu)成由您調(diào)用的異步方法所決定,通常情況下回調(diào)函數(shù)的第一個(gè)形參為返回的錯(cuò)誤信息。 如果異步操作執(zhí)行正確并返回,該錯(cuò)誤形參則為`null`或者`undefined`。
如果您使用的是同步版本的操作方法,則一旦出現(xiàn)錯(cuò)誤,會(huì)以通常的拋出錯(cuò)誤的形式返回錯(cuò)誤。 你可以用`try`和`catch`等語(yǔ)句來(lái)攔截錯(cuò)誤并使程序繼續(xù)進(jìn)行。
這里是一個(gè)異步版本的例子:
~~~
fs.unlink('/tmp/hello', function (err) {
if (err) throw err;
console.log('successfully deleted /tmp/hello');
});
~~~
這是同步版本的例子:
~~~
fs.unlinkSync('/tmp/hello')
console.log('successfully deleted /tmp/hello');
~~~
當(dāng)使用異步版本時(shí)不能保證執(zhí)行順序,因此下面這個(gè)例子很容易出錯(cuò):
~~~
fs.rename('/tmp/hello', '/tmp/world', function (err) {
if (err) throw err;
console.log('renamed complete');
});
fs.stat('/tmp/world', function (err, stats) {
if (err) throw err;
console.log('stats: ' + JSON.stringify(stats));
});
~~~
`fs.stat`有可能在`fs.rename`前執(zhí)行.要等到正確的執(zhí)行順序應(yīng)該用下面的方法:
~~~
fs.rename('/tmp/hello', '/tmp/world', function (err) {
if (err) throw err;
fs.stat('/tmp/world', function (err, stats) {
if (err) throw err;
console.log('stats: ' + JSON.stringify(stats));
});
});
~~~
在繁重的任務(wù)中,*強(qiáng)烈推薦*使用這些函數(shù)的異步版本.同步版本會(huì)阻塞進(jìn)程,直到完成處理,也就是說(shuō)會(huì)暫停所有的連接.
可以使用文件名的相對(duì)路徑, 但是記住這個(gè)路徑是相對(duì)于`process.cwd()`的.
大部分的文件系統(tǒng)(fs)函數(shù)可以忽略回調(diào)函數(shù)(callback)這個(gè)參數(shù).如果忽略它,將會(huì)由一個(gè)默認(rèn)回調(diào)函數(shù)(callback)來(lái)重新拋出(rethrow)錯(cuò)誤.要獲得原調(diào)用點(diǎn)的堆棧跟蹤(trace)信息,需要在環(huán)境變量里設(shè)置NODE_DEBUG.
~~~
$ env NODE_DEBUG=fs node script.js
fs.js:66
throw err;
^
Error: EISDIR, read
at rethrow (fs.js:61:21)
at maybeCallback (fs.js:79:42)
at Object.fs.readFile (fs.js:153:18)
at bad (/path/to/script.js:2:17)
at Object.<anonymous> (/path/to/script.js:5:1)
<etc.>
~~~
### fs.rename(oldPath, newPath, callback)
異步版本的rename函數(shù)(2).完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.renameSync(oldPath, newPath)
同步版本的rename(2).
### fs.ftruncate(fd, len, callback)
異步版本的ftruncate(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.ftruncateSync(fd, len)
同步版本的ftruncate(2).
### fs.truncate(path, len, callback)
異步版本的truncate(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.truncateSync(path, len)
同步版本的truncate(2).
異步版本的chown.完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
異步版本的chown(2).完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.chownSync(path, uid, gid)
同步版本的chown(2).
### fs.fchown(fd, uid, gid, callback)
異步版本的fchown(2)?;卣{(diào)函數(shù)的參數(shù)除了出現(xiàn)錯(cuò)誤時(shí)有一個(gè)錯(cuò)誤對(duì)象外,沒(méi)有其它參數(shù)。
### fs.fchownSync(fd, uid, gid)
同步版本的fchown(2).
### fs.lchown(path, uid, gid, callback)
異步版的lchown(2)。完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.lchownSync(path, uid, gid)
同步版本的lchown(2).
### fs.chmod(path, mode, callback)
異步版的 chmod(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.chmodSync(path, mode)
同步版的 chmod(2).
### fs.fchmod(fd, mode, callback)
異步版的 fchmod(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.fchmodSync(fd, mode)
同步版的 fchmod(2).
### fs.lchmod(path, mode, callback)
異步版的 lchmod(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
僅在 Mac OS X 系統(tǒng)下可用。
### fs.lchmodSync(path, mode)
同步版的 lchmod(2).
### fs.stat(path, callback)
異步版的 stat(2). 回調(diào)函數(shù)(callback) 接收兩個(gè)參數(shù): `(err, stats)` ,其中 `stats` 是一個(gè) [fs.Stats](#) 對(duì)象。 詳情請(qǐng)參考 [fs.Stats](#)
### fs.lstat(path, callback)
異步版的 lstat(2). 回調(diào)函數(shù)(callback)接收兩個(gè)參數(shù): `(err, stats)` 其中 `stats` 是一個(gè) `fs.Stats` 對(duì)象。 `lstat()` 與 `stat()` 相同,區(qū)別在于: 若 `path` 是一個(gè)符號(hào)鏈接時(shí)(symbolic link),讀取的是該符號(hào)鏈接本身,而不是它所 鏈接到的文件。
### fs.fstat(fd, callback)
異步版的 fstat(2). 回調(diào)函數(shù)(callback)接收兩個(gè)參數(shù): `(err, stats)` 其中 `stats` 是一個(gè) `fs.Stats` 對(duì)象。 `fstat()` 與 `stat()` 相同,區(qū)別在于: 要讀取的文件(譯者注:即第一個(gè)參數(shù))是一個(gè)文件描述符(file descriptor) `fd` 。
### fs.statSync(path)
同步版的 stat(2). 返回一個(gè) `fs.Stats` 實(shí)例。
### fs.lstatSync(path)
同步版的 lstat(2). 返回一個(gè) `fs.Stats` 實(shí)例。
### fs.fstatSync(fd)
同步版的 fstat(2). 返回一個(gè) `fs.Stats` 實(shí)例。
### fs.link(srcpath, dstpath, callback)
異步版的 link(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息。
### fs.linkSync(srcpath, dstpath)
同步版的 link(2).
### fs.symlink(srcpath, dstpath, [type], callback)
異步版的 symlink(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息。 `type` 可以是 `'dir'`, `'file'`, 或者`'junction'` (默認(rèn)是 `'file'`),此參數(shù)僅用于 Windows 系統(tǒng)(其他系統(tǒng)平臺(tái)會(huì)被忽略)。 注意: Windows 系統(tǒng)要求目標(biāo)路徑(譯者注:即 `dstpath` 參數(shù))必須是一個(gè)絕對(duì)路徑,當(dāng)使用 `'junction'` 時(shí),`dstpath` 參數(shù)會(huì)自動(dòng)轉(zhuǎn)換為絕對(duì)路徑。
### fs.symlinkSync(srcpath, dstpath, [type])
同步版的 symlink(2).
### fs.readlink(path, callback)
異步版的 readlink(2). 回調(diào)函數(shù)(callback)接收兩個(gè)參數(shù): `(err, linkString)`.
### fs.readlinkSync(path)
同步版的 readlink(2). 返回符號(hào)鏈接(symbolic link)的字符串值。
### fs.realpath(path, [cache], callback)
異步版的 realpath(2). 回調(diào)函數(shù)(callback)接收兩個(gè)參數(shù): `(err, resolvedPath)`. May use `process.cwd` to resolve relative paths. `cache` is an object literal of mapped paths that can be used to force a specific path resolution or avoid additional `fs.stat` calls for known real paths.
實(shí)例:
~~~
var cache = {'/etc':'/private/etc'};
fs.realpath('/etc/passwd', cache, function (err, resolvedPath) {
if (err) throw err;
console.log(resolvedPath);
});
~~~
### fs.realpathSync(path, [cache])
realpath(2) 的同步版本。返回解析出的路徑。
### fs.unlink(path, callback)
異步版的 unlink(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.unlinkSync(path)
同步版的 unlink(2).
### fs.rmdir(path, callback)
異步版的 rmdir(2). 異步版的 link(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息。
### fs.rmdirSync(path)
同步版的 rmdir(2).
### fs.mkdir(path, [mode], callback)
異步版的 mkdir(2)。 異步版的 link(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息。文件 `mode` 默認(rèn)為 `0777`。
### fs.mkdirSync(path, [mode])
同步版的 mkdir(2)。
### fs.readdir(path, callback)
異步版的 readdir(3)。 讀取 path 路徑所在目錄的內(nèi)容。 回調(diào)函數(shù) (callback) 接受兩個(gè)參數(shù) `(err, files)` 其中 `files` 是一個(gè)存儲(chǔ)目錄中所包含的文件名稱(chēng)的數(shù)組,數(shù)組中不包括 `'.'` 和 `'..'`。
### fs.readdirSync(path)
同步版的 readdir(3). 返回文件名數(shù)組,其中不包括 `'.'` 和 `'..'` 目錄.
### fs.close(fd, callback)
異步版 close(2). 完成時(shí)的回調(diào)函數(shù)(callback)只接受一個(gè)參數(shù):可能出現(xiàn)的異常信息.
### fs.closeSync(fd)
同步版的 close(2).
### fs.open(path, flags, [mode], callback)
異步版的文件打開(kāi). 詳見(jiàn) open(2). `flags` 可以是:
- `'r'` - 以【只讀】的方式打開(kāi)文件. 當(dāng)文件不存在時(shí)產(chǎn)生異常.
- `'r+'` - 以【讀寫(xiě)】的方式打開(kāi)文件. 當(dāng)文件不存在時(shí)產(chǎn)生異常.
- `'rs'` - 同步模式下,以【只讀】的方式打開(kāi)文件. 指令繞過(guò)操作系統(tǒng)的本地文件系統(tǒng)緩存.
該功能主要用于打開(kāi) NFS 掛載的文件, 因?yàn)樗梢宰屇闾^(guò)默認(rèn)使用的過(guò)時(shí)本地緩存. 但這實(shí)際上非常影響 I/O 操作的性能, 因此除非你確實(shí)有這樣的需求, 否則請(qǐng)不要使用該標(biāo)志.
注意: 這并不意味著 `fs.open()` 變成了一個(gè)同步阻塞的請(qǐng)求. 如果你想要一個(gè)同步阻塞的請(qǐng)求你應(yīng)該使用 `fs.openSync()`.
- `'rs+'` - 同步模式下, 以【讀寫(xiě)】的方式打開(kāi)文件. 請(qǐng)謹(jǐn)慎使用該方式, 詳細(xì)請(qǐng)查看 `'rs'` 的注釋.
- `'w'` - 以【只寫(xiě)】的形式打開(kāi)文件. 文件會(huì)被創(chuàng)建 (如果文件不存在) 或者覆蓋 (如果存在).
- `'wx'` - 類(lèi)似 `'w'` 區(qū)別是如果文件存在則操作會(huì)失敗.
- `'w+'` - 以【讀寫(xiě)】的方式打開(kāi)文件. 文件會(huì)被創(chuàng)建 (如果文件不存在) 或者覆蓋 (如果存在).
- `'wx+'` - 類(lèi)似 `'w+'` 區(qū)別是如果文件存在則操作會(huì)失敗.
- `'a'` - 以【附加】的形式打開(kāi)文件,即新寫(xiě)入的數(shù)據(jù)會(huì)附加在原來(lái)的文件內(nèi)容之后. 如果文件不存在則會(huì)默認(rèn)創(chuàng)建.
- `'ax'` - 類(lèi)似 `'a'` 區(qū)別是如果文件存在則操作會(huì)失敗.
- `'a+'` - 以【讀取】和【附加】的形式打開(kāi)文件. 如果文件不存在則會(huì)默認(rèn)創(chuàng)建.
- `'ax+'` - 類(lèi)似 `'a+'` 區(qū)別是如果文件存在則操作會(huì)失敗.
參數(shù) `mode` 用于設(shè)置文件模式 (permission and sticky bits), 不過(guò)前提是這個(gè)文件是已存在的. 默認(rèn)情況下是 `0666`, 有可讀和可寫(xiě)權(quán)限.
該 callback 接收兩個(gè)參數(shù) `(err, fd)`.
排除 (exclusive) 標(biāo)識(shí) `'x'` (對(duì)應(yīng) open(2) 的 `O_EXCL` 標(biāo)識(shí)) 保證 `path` 是一個(gè)新建的文件。 POSIX 操作系統(tǒng)上,即使 `path` 是一個(gè)指向不存在位置的符號(hào)鏈接,也會(huì)被認(rèn)定為文件存在。 排除標(biāo)識(shí)在網(wǎng)絡(luò)文件系統(tǒng)不能確定是否有效。
在 Linux 上,無(wú)法對(duì)以追加 (append) 模式打開(kāi)的文件進(jìn)行指定位置的寫(xiě)入操作。 內(nèi)核會(huì)忽略位置參數(shù)并且總是將數(shù)據(jù)追加到文件尾部。
### fs.openSync(path, flags, [mode])
`fs.open()` 的同步版.
### fs.utimes(path, atime, mtime, callback)
### fs.utimesSync(path, atime, mtime)
更改 path 所指向的文件的時(shí)間戳。
### fs.futimes(fd, atime, mtime, callback)
### fs.futimesSync(fd, atime, mtime)
更改文件描述符 (file discriptor) 所指向的文件的時(shí)間戳。
### fs.fsync(fd, callback)
異步版本的 fsync(2)?;卣{(diào)函數(shù)僅含有一個(gè)異常 (exception) 參數(shù)。
### fs.fsyncSync(fd)
fsync(2) 的同步版本。
### fs.write(fd, buffer, offset, length[, position], callback)
通過(guò)文件標(biāo)識(shí)`fd`,向指定的文件中寫(xiě)入`buffer`。
`offset` 和`length` 可以確定從哪個(gè)位置開(kāi)始寫(xiě)入buffer。
`position` 是參考當(dāng)前文檔光標(biāo)的位置,然后從該處寫(xiě)入數(shù)據(jù)。如果`typeof position !== 'number'`,那么數(shù)據(jù)會(huì)從當(dāng)前文檔位置寫(xiě)入,請(qǐng)看pwrite(2)。
回調(diào)中會(huì)給出三個(gè)參數(shù) `(err, written, buffer)`,`written` 說(shuō)明從`buffer`寫(xiě)入的字節(jié)數(shù)。
注意,`fs.write`多次地在同一個(gè)文件中使用而沒(méi)有等待回調(diào)是不安全的。在這種情況下,強(qiáng)烈推薦使用`fs.createWriteStream`。
在 Linux 上,無(wú)法對(duì)以追加 (append) 模式打開(kāi)的文件進(jìn)行指定位置的寫(xiě)入操作。 內(nèi)核會(huì)忽略位置參數(shù)并且總是將數(shù)據(jù)追加到文件尾部。
### fs.write(fd, data[, position[, encoding]], callback)
把`data`寫(xiě)入到文檔中通過(guò)指定的`fd`,如果`data`不是buffer對(duì)象的實(shí)例則會(huì)把值強(qiáng)制轉(zhuǎn)化成一個(gè)字符串。
`position` 是參考當(dāng)前文檔光標(biāo)的位置,然后從該處寫(xiě)入數(shù)據(jù)。如果`typeof position !== 'number'`,那么數(shù)據(jù)會(huì)從當(dāng)前文檔位置寫(xiě)入,請(qǐng)看pwrite(2)。
`encoding` 是預(yù)期得到一個(gè)字符串編碼
回調(diào)會(huì)得到這些參數(shù) `(err, written, string)`,`written`表明傳入的`string`需要寫(xiě)入的字符串長(zhǎng)度。注意字節(jié)的寫(xiě)入跟字符串寫(xiě)入是不一樣的。請(qǐng)看[Buffer.byteLength](#).
與寫(xiě)入`buffer`不同,必須寫(xiě)入完整的字符串,截取字符串不是符合規(guī)定的。這是因?yàn)榉祷氐淖止?jié)的位移跟字符串的位移是不一樣的。
注意,`fs.write`多次地在同一個(gè)文件中使用而沒(méi)有等待回調(diào)是不安全的。在這種情況下,強(qiáng)烈推薦使用`fs.createWriteStream`。
在 Linux 上,無(wú)法對(duì)以追加 (append) 模式打開(kāi)的文件進(jìn)行指定位置的寫(xiě)入操作。 內(nèi)核會(huì)忽略位置參數(shù)并且總是將數(shù)據(jù)追加到文件尾部。
### fs.writeSync(fd, buffer, offset, length[, position])
### fs.writeSync(fd, data[, position[, encoding]])
同步版本的`fs.write()`。返回寫(xiě)入的字節(jié)數(shù)。
### fs.read(fd, buffer, offset, length, position, callback)
從指定的文檔標(biāo)識(shí)符`fd`讀取文件數(shù)據(jù)。
`buffer` 是緩沖區(qū),數(shù)據(jù)將會(huì)寫(xiě)入這里。
`offset` 是開(kāi)始向緩沖區(qū) `buffer` 寫(xiě)入的偏移量。
`length` 是一個(gè)整形值,指定了讀取的字節(jié)數(shù)。
`position` 是一個(gè)整形值,指定了從哪里開(kāi)始讀取文件,如果`position`為`null`,將會(huì)從文件當(dāng)前的位置讀取數(shù)據(jù)。
回調(diào)函數(shù)給定了三個(gè)參數(shù), `(err, bytesRead, buffer)`, 分別為錯(cuò)誤,讀取的字節(jié)和緩沖區(qū)。
### fs.readSync(fd, buffer, offset, length, position)
`fs.read` 函數(shù)的同步版本。 返回`bytesRead`的個(gè)數(shù)。
### fs.readFile(filename, [options], callback)
- `filename` {String}
- `options` {Object}
- `encoding` {String | Null} default = `null`
- `flag` {String} default = `'r'`
- `callback` {Function}
異步讀取一個(gè)文件的全部?jī)?nèi)容。舉例:
~~~
fs.readFile('/etc/passwd', function (err, data) {
if (err) throw err;
console.log(data);
});
~~~
回調(diào)函數(shù)傳遞了兩個(gè)參數(shù) `(err, data)`, `data` 就是文件的內(nèi)容。
如果未指定編碼方式,原生buffer就會(huì)被返回。
### fs.readFileSync(filename, [options])
`fs.readFile`的同步版本。 返回文件名為 `filename` 的文件內(nèi)容。
如果 `encoding` 選項(xiàng)被指定, 那么這個(gè)函數(shù)返回一個(gè)字符串。如果未指定,則返回一個(gè)原生buffer。
### fs.writeFile(filename, data, [options], callback)
- `filename` {String}
- `data` {String | Buffer}
- `options` {Object}
- `encoding` {String | Null} default = `'utf8'`
- `mode` {Number} default = `438` (aka `0666` in Octal)
- `flag` {String} default = `'w'`
- `callback` {Function}
異步的將數(shù)據(jù)寫(xiě)入一個(gè)文件, 如果文件原先存在,會(huì)被替換。 `data` 可以是一個(gè)string,也可以是一個(gè)原生buffer。
`encoding` 選項(xiàng)會(huì)被忽視如果 `data` 不是string而是原生buffer。`encoding`缺省為 `'utf8'`。
實(shí)例:
~~~
fs.writeFile('message.txt', 'Hello Node', function (err) {
if (err) throw err;
console.log('It\'s saved!'); //文件被保存
});
~~~
### fs.writeFileSync(filename, data, [options])
`fs.writeFile`的同步版本。
### fs.appendFile(filename, data, [options], callback)
- `filename` {String}
- `data` {String | Buffer}
- `options` {Object}
- `encoding` {String | Null} default = `'utf8'`
- `mode` {Number} default = `438` (aka `0666` in Octal)
- `flag` {String} default = `'a'`
- `callback` {Function}
異步的將數(shù)據(jù)添加到一個(gè)文件的尾部,如果文件不存在,會(huì)創(chuàng)建一個(gè)新的文件。 `data` 可以是一個(gè)string,也可以是原生buffer。
實(shí)例:
~~~
fs.appendFile('message.txt', 'data to append', function (err) {
if (err) throw err;
console.log('The "data to append" was appended to file!'); //數(shù)據(jù)被添加到文件的尾部
});
~~~
### fs.appendFileSync(filename, data, [options])
`fs.appendFile`的同步版本。
### fs.watchFile(filename, [options], listener)
~~~
穩(wěn)定性: 2 - 不穩(wěn)定. 盡可能的話推薦使用 fs.watch 來(lái)代替。
~~~
監(jiān)視`filename`指定的文件的改變. 回調(diào)函數(shù) `listener` 會(huì)在文件每一次被訪問(wèn)時(shí)被調(diào)用。
第二個(gè)參數(shù)是可選的。 如果提供此參數(shù),`options` 應(yīng)該是包含兩個(gè)成員`persistent`和`interval`的對(duì)象,其中`persistent`值為boolean類(lèi)型。`persistent`指定進(jìn)程是否應(yīng)該在文件被監(jiān)視(watch)時(shí)繼續(xù)運(yùn)行,`interval`指定了目標(biāo)文件被查詢(xún)的間隔,以毫秒為單位。缺省值為`{ persistent: true, interval: 5007 }`。
`listener` 有兩個(gè)參數(shù),第一個(gè)為文件現(xiàn)在的狀態(tài),第二個(gè)為文件的前一個(gè)狀態(tài)。
~~~
fs.watchFile('message.text', function (curr, prev) {
console.log('the current mtime is: ' + curr.mtime);
console.log('the previous mtime was: ' + prev.mtime);
});
~~~
`listener`中的文件狀態(tài)對(duì)象類(lèi)型為`fs.Stat`。
如果你只想在文件被修改時(shí)被告知,而不是僅僅在被訪問(wèn)時(shí)就告知,你應(yīng)當(dāng)在`listener`回調(diào)函數(shù)中比較下兩個(gè)狀態(tài)對(duì)象的`mtime`屬性。即`curr.mtime` 和 `prev.mtime`.
### fs.unwatchFile(filename, [listener])
~~~
穩(wěn)定性: 2 - 不穩(wěn)定. 盡可能的話推薦使用 fs.watch 來(lái)代替。
~~~
停止監(jiān)視文件名為 `filename`的文件. 如果 `listener`
- 關(guān)于本文檔
- 概述
- 斷言 (assert)
- Buffer
- Addons插件
- 子進(jìn)程
- 集群
- 控制臺(tái)
- 加密(Crypto)
- 調(diào)試器
- DNS
- 域
- 事件 (Events)
- File System
- 全局對(duì)象
- HTTP
- HTTPS
- Modules
- net
- 操作系統(tǒng)
- 路徑 (Path)
- process
- punycode
- Query String
- Readline
- REPL
- Smalloc
- 流
- 字符串解碼器
- 定時(shí)器
- TLS (SSL)
- TTY
- UDP / 數(shù)據(jù)報(bào)套接字
- URL
- utils
- 執(zhí)行 JavaScript
- Zlib
- 進(jìn)度
- 感謝
