亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 VS Code 調試 Node.js 中的私有類字段?

如何使用 VS Code 調試 Node.js 中的私有類字段?

小唯快跑啊 2023-11-02 16:53:33
如何在運行時檢查類實例私有字段的內容,在 VS Code 中調試 Node 應用程序?這應該是一些基本的東西,但不知何故似乎不可能......VS Code 的 Javascript 調試器不顯示對象的私有字段我嘗試過util.inspect,但 Node 人員決定不讓它工作。如果不可能,有哪些解決方法?我在用著:節點15.3.0VS代碼1.51.1
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

更新:

在提出此問題時,VS Code 的內置 JavaScript 調試器不支持私有類字段的調試。從版本 1.56.0(2021 年 4 月)開始,現在是這樣。


舊答案:

VS Code 的內置 JavaScript 調試器 (?ms-vscode.js-debug?) 尚不支持私有類字段。( github上有一個功能請求)

然而,v8 確實有一個(目前處于實驗狀態)讀取私有類字段的方法。我制作了一個概念驗證項目 (?leonardoraele/private-field-inspect?),它使用 Node 的檢查器 API在運行時以編程方式打開調試會話以讀取變量的內容。(這不會中斷運行時執行)

它有效,但有一些警告。

用法:

import inspect from '../path/to/private-field-inspect';


class Subject

{

? ? publicValue = 'not so secret';

? ? #secretValue = 'my secret';

}


const subject = new Subject();


inspect(subject)

? ? .then(console.debug);

輸出:


{ publicValue: 'not so secret', '#secretValue': 'my secret' }

上面的解決方法對我來說并不令人滿意,因此我認為最好盡可能避免使用私有類字段,直到調試器正確支持它們。相反,使用符號來隱藏私有變量。


例子:


// my-class.js (or .msj)

const PRIVATE = {

? ? SECRET_VAL = Symbol('#secretVal');

};


export default class Subject {

? ? // ms-vscode.js-debug can read it, but other modules can't

? ? [PRIVATE.SECRET_VAL]: 'my secret';


? ? doSomething()

? ? {

? ? ? ? const secret = this[PRIVATE.SECRET_VAL];

? ? ? ? // ...

? ? }

}


查看完整回答
反對 回復 2023-11-02
  • 1 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號