Node.js v25.0.0 文件
- Node.js v25.0.0
-
目錄
- 控制檯
- 類:
Consolenew Console(stdout[, stderr][, ignoreErrors])new Console(options)console.assert(value[, ...message])console.clear()console.count([label])console.countReset([label])console.debug(data[, ...args])console.dir(obj[, options])console.dirxml(...data)console.error([data][, ...args])console.group([...label])console.groupCollapsed()console.groupEnd()console.info([data][, ...args])console.log([data][, ...args])console.table(tabularData[, properties])console.time([label])console.timeEnd([label])console.timeLog([label][, ...data])console.trace([message][, ...args])console.warn([data][, ...args])
- 僅限檢查器的方法
- 類:
- 控制檯
-
索引
- 斷言測試
- 非同步上下文跟蹤
- 非同步鉤子
- 緩衝區
- C++ 外掛
- 使用 Node-API 的 C/C++ 外掛
- C++ 嵌入器 API
- 子程序
- 叢集
- 命令列選項
- 控制檯
- 加密
- 偵錯程式
- 已棄用的 API
- 診斷通道
- DNS
- 域
- 環境變數
- 錯誤
- 事件
- 檔案系統
- 全域性物件
- HTTP
- HTTP/2
- HTTPS
- 檢查器
- 國際化
- 模組:CommonJS 模組
- 模組:ECMAScript 模組
- 模組:
node:moduleAPI - 模組:包
- 模組:TypeScript
- 網路
- 作業系統
- 路徑
- 效能鉤子
- 許可權
- 程序
- Punycode
- 查詢字串
- 逐行讀取
- REPL
- 報告
- 單一可執行檔案應用
- SQLite
- 流
- 字串解碼器
- 測試執行器
- 定時器
- TLS/SSL
- 跟蹤事件
- TTY
- UDP/資料報
- URL
- 實用工具
- V8
- 虛擬機器
- WASI
- Web Crypto API
- Web Streams API
- 工作執行緒
- Zlib
- 其他版本
- 選項
Console#
原始碼: lib/console.js
node:console 模組提供了一個簡單的除錯控制檯,類似於 Web 瀏覽器提供的 JavaScript 控制檯機制。
該模組匯出兩個特定的元件
- 一個
Console類,它擁有諸如console.log()、console.error()和console.warn()等方法,可用於寫入任何 Node.js 流。 - 一個全域性的
console例項,配置為寫入process.stdout和process.stderr。全域性的console可以在不呼叫require('node:console')的情況下使用。
警告:全域性控制檯物件的方法既不像它們所模仿的瀏覽器 API 那樣始終同步,也不像所有其他 Node.js 流那樣始終非同步。希望依賴於控制檯函式同步/非同步行為的程式應首先確定控制檯底層流的性質。這是因為該流取決於當前程序的底層平臺和標準流配置。有關更多資訊,請參閱關於程序 I/O 的說明。
使用全域性 console 的示例
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
使用 Console 類的示例
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(new Error('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to err
類:Console#
Console 類可用於建立一個具有可配置輸出流的簡單記錄器,可以透過 require('node:console').Console 或 console.Console(或它們的解構對應項)來訪問。
import { Console } from 'node:console';const { Console } = require('node:console');
const { Console } = console;
new Console(stdout[, stderr][, ignoreErrors])#
new Console(options)#
options<Object>stdout<stream.Writable>stderr<stream.Writable>ignoreErrors<boolean> 在寫入底層流時忽略錯誤。預設值:true。colorMode<boolean> | <string> 為此Console例項設定顏色支援。設定為true可在檢查值時啟用著色。設定為false可在檢查值時停用著色。設定為'auto'使顏色支援取決於isTTY屬性的值以及相應流上getColorDepth()返回的值。如果同時設定了inspectOptions.colors,則不能使用此選項。預設值:'auto'。inspectOptions<Object> | <Map> 指定傳遞給util.inspect()的選項。可以是一個選項物件,或者如果需要為 stdout 和 stderr 指定不同選項,則為一個從流物件到選項的Map。groupIndentation<number> 設定分組縮排。預設值:2。
用一個或兩個可寫流例項建立一個新的 Console。stdout 是一個用於列印日誌或資訊輸出的可寫流。stderr 用於警告或錯誤輸出。如果未提供 stderr,則 stdout 將用於 stderr。
import { createWriteStream } from 'node:fs';
import { Console } from 'node:console';
// Alternatively
// const { Console } = console;
const output = createWriteStream('./stdout.log');
const errorOutput = createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5const fs = require('node:fs');
const { Console } = require('node:console');
// Alternatively
// const { Console } = console;
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5
全域性 console 是一個特殊的 Console,其輸出被髮送到 process.stdout 和 process.stderr。它等同於呼叫:
new Console({ stdout: process.stdout, stderr: process.stderr });
console.assert(value[, ...message])#
如果 value 為假值或被省略,console.assert() 會寫入一條訊息。它只寫入訊息,不影響其他執行。輸出總是以 "Assertion failed" 開頭。如果提供了 message,則使用 util.format() 對其進行格式化。
如果 value 是真值,則什麼也不發生。
console.assert(true, 'does nothing');
console.assert(false, 'Whoops %s work', 'didn\'t');
// Assertion failed: Whoops didn't work
console.assert();
// Assertion failed
console.clear()#
當 stdout 是一個 TTY 時,呼叫 console.clear() 將嘗試清除 TTY。當 stdout 不是 TTY 時,此方法不執行任何操作。
console.clear() 的具體操作可能因作業系統和終端型別而異。對於大多數 Linux 作業系統,console.clear() 的操作類似於 clear shell 命令。在 Windows 上,console.clear() 將僅清除 Node.js 二進位制檔案當前終端視口中的輸出。
console.count([label])#
label<string> 計數器的顯示標籤。預設值:'default'。
維護一個特定於 label 的內部計數器,並向 stdout 輸出使用給定 label 呼叫 console.count() 的次數。
> console.count()
default: 1
undefined
> console.count('default')
default: 2
undefined
> console.count('abc')
abc: 1
undefined
> console.count('xyz')
xyz: 1
undefined
> console.count('abc')
abc: 2
undefined
> console.count()
default: 3
undefined
>
console.countReset([label])#
label<string> 計數器的顯示標籤。預設值:'default'。
重置特定於 label 的內部計數器。
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.dir(obj[, options])#
obj<any>options<Object>showHidden<boolean> 如果為true,則物件的不可列舉屬性和符號屬性也將顯示。預設值:false。depth<number> 告訴util.inspect()在格式化物件時遞迴多少次。這對於檢查大型複雜物件很有用。要使其無限遞迴,請傳遞null。預設值:2。colors<boolean> 如果為true,則輸出將使用 ANSI 顏色程式碼進行樣式化。顏色是可定製的;請參閱自定義util.inspect()顏色。預設值:false。
對 obj 使用 util.inspect() 並將結果字串列印到 stdout。此函式會繞過 obj 上定義的任何自定義 inspect() 函式。
console.error([data][, ...args])#
列印到 stderr 並換行。可以傳遞多個引數,第一個用作主要訊息,所有附加引數用作類似於 printf(3) 的替換值(所有引數都傳遞給 util.format())。
const code = 5;
console.error('error #%d', code);
// Prints: error #5, to stderr
console.error('error', code);
// Prints: error 5, to stderr
如果在第一個字串中未找到格式化元素(例如 %d),則對每個引數呼叫 util.inspect() 並連線生成的字串值。有關更多資訊,請參閱 util.format()。
console.group([...label])#
...label<any>
將後續行的縮排增加 groupIndentation 長度的空格。
如果提供了一個或多個 label,則首先列印它們,不帶額外的縮排。
console.groupCollapsed()#
console.group() 的別名。
console.groupEnd()#
將後續行的縮排減少 groupIndentation 長度的空格。
console.log([data][, ...args])#
列印到 stdout 並換行。可以傳遞多個引數,第一個用作主要訊息,所有附加引數用作類似於 printf(3) 的替換值(所有引數都傳遞給 util.format())。
const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout
有關更多資訊,請參閱 util.format()。
console.table(tabularData[, properties])#
tabularData<any>properties<string[]> 用於構造表格的備用屬性。
嘗試用 tabularData 的屬性作為列(或使用 properties)和 tabularData 的行來構造一個表格並列印它。如果無法將其解析為表格資料,則回退到僅記錄該引數。
// These can't be parsed as tabular data
console.table(Symbol());
// Symbol()
console.table(undefined);
// undefined
console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
// ┌─────────┬─────┬─────┐
// │ (index) │ a │ b │
// ├─────────┼─────┼─────┤
// │ 0 │ 1 │ 'Y' │
// │ 1 │ 'Z' │ 2 │
// └─────────┴─────┴─────┘
console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
// ┌─────────┬─────┐
// │ (index) │ a │
// ├─────────┼─────┤
// │ 0 │ 1 │
// │ 1 │ 'Z' │
// └─────────┴─────┘
console.time([label])#
label<string> 預設值:'default'
啟動一個計時器,可用於計算操作的持續時間。計時器由唯一的 label 標識。在呼叫 console.timeEnd() 時使用相同的 label 來停止計時器,並以適當的時間單位向 stdout 輸出經過的時間。例如,如果經過的時間是 3869 毫秒,console.timeEnd() 將顯示 "3.869s"。
console.timeEnd([label])#
label<string> 預設值:'default'
停止先前透過呼叫 console.time() 啟動的計時器,並將結果列印到 stdout。
console.time('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438ms
console.timeLog([label][, ...data])#
對於先前透過呼叫 console.time() 啟動的計時器,將經過的時間和其他 data 引數列印到 stdout。
console.time('process');
const value = expensiveProcess1(); // Returns 42
console.timeLog('process', value);
// Prints "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process');
console.trace([message][, ...args])#
向 stderr 列印字串 'Trace: ',其後是使用 util.format() 格式化的訊息以及到程式碼當前位置的堆疊跟蹤。
console.trace('Show me');
// Prints: (stack trace will vary based on where trace is called)
// Trace: Show me
// at repl:2:9
// at REPLServer.defaultEval (repl.js:248:27)
// at bound (domain.js:287:14)
// at REPLServer.runBound [as eval] (domain.js:300:12)
// at REPLServer.<anonymous> (repl.js:412:12)
// at emitOne (events.js:82:20)
// at REPLServer.emit (events.js:169:7)
// at REPLServer.Interface._onLine (readline.js:210:10)
// at REPLServer.Interface._line (readline.js:549:8)
// at REPLServer.Interface._ttyWrite (readline.js:826:14)
僅限檢查器的方法#
以下方法由 V8 引擎在通用 API 中公開,但除非與檢查器(--inspect 標誌)結合使用,否則不會顯示任何內容。
console.profile([label])#
label<string>
除非在檢查器中使用,否則此方法不會顯示任何內容。console.profile() 方法啟動一個 JavaScript CPU 分析,帶有一個可選的標籤,直到呼叫 console.profileEnd()。該分析隨後會新增到檢查器的 Profile 面板中。
console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
console.profileEnd([label])#
label<string>
除非在檢查器中使用,否則此方法不會顯示任何內容。如果當前有正在進行的 JavaScript CPU 分析會話,則停止它,並將報告列印到檢查器的 Profiles 面板。有關示例,請參見 console.profile()。
如果呼叫此方法時不帶標籤,則會停止最近啟動的分析。