Javascript 如何使用VS代码调试Node.js中的私有类字段?

Javascript 如何使用VS代码调试Node.js中的私有类字段?,javascript,node.js,debugging,visual-studio-code,encapsulation,Javascript,Node.js,Debugging,Visual Studio Code,Encapsulation,在VS代码中调试节点应用程序的运行时,如何检查类实例的私有字段的内容 这应该是一些基本的东西,但不知何故似乎不可能 VS代码的Javascript调试器不显示对象的私有字段 我试过了,但没成功 如果不可能,有哪些变通方法 我正在使用: 节点15.3.0 VS代码1.51.1 更新: 在回答这个问题时,VS代码的内置javascript调试器不支持调试私有类字段。从1.56.0版(2021年4月)开始,现在就有了 旧答案: VS代码的内置javascript调试器()还不支持私有类字段。(

在VS代码中调试节点应用程序的运行时,如何检查类实例的私有字段的内容

这应该是一些基本的东西,但不知何故似乎不可能

  • VS代码的Javascript调试器不显示对象的私有字段
  • 我试过了,但没成功
如果不可能,有哪些变通方法

我正在使用:

  • 节点
    15.3.0
  • VS代码1.51.1
更新:

在回答这个问题时,VS代码的内置javascript调试器不支持调试私有类字段。从1.56.0版(2021年4月)开始,现在就有了


旧答案:

VS代码的内置javascript调试器()还不支持私有类字段。(github上有一个用于此的应用程序)

然而,v8确实有一个新的引擎(目前处于实验状态)。我制作了一个概念验证项目(),它使用节点以编程方式在运行时打开调试会话来读取变量的内容。(这不会中断运行时执行)

它是有效的,但有一个很好的效果

用法:

从“../path/to/private field inspect”导入检查;
班级科目
{
publicValue='不那么秘密';
#secretValue=‘我的秘密’;
}
常量主题=新主题();
检查(主题)
.then(console.debug);
输出:

{publicValue:'不那么秘密','secretValue':'my secret'}

上面的解决方法对我来说并不令人满意,因此我认为最好尽可能避免使用私有类字段,直到调试器正确支持它们。相反,使用符号隐藏私有变量

示例:

//my-class.js(或.msj)
const PRIVATE={
秘密=符号('secretVal');
};
导出默认类主题{
//ms-vscode.js-debug可以读取它,但其他模块不能
[私人秘密]:“我的秘密”;
doSomething()
{
const secret=this[PRIVATE.secret\u VAL];
// ...
}
}

我相信VSCode已经在2021年4月的v1.56.1版本中为私有字段提供了调试器支持:是的,他们提供了!