たまたまコンソール内で NodeJs エラーをログに記録すると、接続されている完全なフィールドもトレースされますが、非常に長いフィールドは、CI の端末で混乱を招くため、非常に長いフィールドに対する警告です。
たとえば、次の観察エラー クラスがあります:
extends Error )
エクスポート
クラス
ShellError{
stdout
: 文字列
現代 ShellError(' error', 'stdout'stderr
:
文字列)出力
(
:
: 弦) { 几帳面(メッセージ文字列
stderrコンストラクター
(メッセージ :
,文字列
文字列,
stdout
:)
)this
こちら
stderr=
.stdout
stderr=
stdoutthis
..
出力=
標準出力+
ログ'n'
+
stderr } } コンソール。,
'stderr'
))
コンソールがトレースします
GitHub
ShellError
:
オブジェクトでのエラー.
/ドキュメント
<
匿名>
/(
/
ユーザー/
モールス/
docs-
from-信念
.ts:/
ローカル-
スクリプト/
play17
m (オブジェクト.
:
)
13
14) モジュール. _compilemodules
(
ノード:
internal//
cjs/
ローダー: 1103:/
ユーザー/
モールス/
.volta/ツール/characterize/パック age/
esno/
lib/node_modules/esno/node_modules /
@esbuild-機器/cjs-
loader/
dist/
index.js: 1: 内部 /modules/cjs/ ローダー
:
ノード(
536
load
)
at Module.
:
32) 特集
981
:
.Module._loadmodules(
ノード:
内部/
/
cjs/
loader: 822: 12)
が ModuleWrap. にある<匿名> (ノード: 内部/モジュール/esm )/翻訳者: 168:.bustle (ノード: 内部/モジュール/esm/module_job:
29
)
ModuleJob
197
すべて (索引Promise
:
asyncat
25
).0
)
async ESMLoader
.インポート (ノード: 内部/モジュール/
esm/
ローダー:
337: 24 ) at async loadESM (ノード: 内部/
ジョブ/
esm_loader:
stdout: ' stdout'88
{
:
)
5
'stderr',
,
stderr
:出力
:
'stdout nstderr'
}また、フィールド
stdout
を表示することもできます。およびstderr
。 コンソール内の他のすべての部分を隠すため、これらのフィールドが非常に充実している場合、ここに大きな叫び声があります. NodeJ からフィールドを隠し、getter を追加して、コードでフィールドを取得できるようにします:
extends Error )
エクスポート
クラス
ShellError{
#stdout:
文字列 #stderr:
文字列 #output: 文字列 コンストラクター (メッセージ:文字列
文字列, stderr,
stdout
:: 弦
) { 几帳面(メッセージ) こちら. name='ShellError' これstdout this.#stderr )=stderr this.#output
.
#stdout=
=
標準出力+
'n'
+ stderr } 導出 出力(
)
{
return this.#output}
}
最も深いフィールドは JavaScript ではほとんど現代的ではないため、それらをトランスパイルするか、ほとんどの最新の NodeJ を消費する必要があります。
❗
#(*で始まるフィールド は非パブリック フィールドとして知られており、クラスの外部にアクセスできないようにする必要があります。そのため、
derive output ゲッターを作成しました