【问题标题】:Wrong Class Name Showing in console.logconsole.log 中显示错误的类名
【发布时间】:2019-11-25 11:28:42
【问题描述】:

在 Node.js 中,我创建了一个类,我在测试期间将该类的实例记录到控制台。

当我 console.log(anObjectFromThatClass) 时,字母“Vo”在终端输出中该对象的左大括号之前。

通常,我希望看到大括号前面的类名,但我看到的是Vo {}。实际的类名在其名称中的任何位置都没有“V”或“o”,也没有扩展另一个名称中带有“V”或“o”的类。

我尝试用谷歌搜索“Vo”是什么意思,但由于该搜索的所有误报,我找不到任何东西。

由于政策原因,我无法在此处发布实际课程。我意识到我并没有给你太多的帮助,但是你能想出一个原因,当控制台记录一个名称中不包含“Vo”的类的实例时,为什么“Vo”会出现在大括号之前?是不是和V8引擎提供给node.js的某种live view有关系?

对于这篇文章,我尝试创建一个重现此行为的类,但我创建的每个类都只是在大括号前记录正确的类名。这段代码有很多 promises 和 async await 的东西,也许这会改变 console.log 输出的类名?

我应该很高兴这段代码运行良好,忘记了console.log() 的特质。但是,我仍然很好奇,所以如果你知道这个“Vo”是什么意思,请告诉我。

【问题讨论】:

  • 你确定运行的代码没有被缩小(或者以某种方式自动修改)吗?这就是我的猜测,但如果没有minimal reproducible example,很难调试
  • 哦!就是这样!我完全忘记了这一点。如果你发帖,你就会得到答案。谢谢!

标签: javascript node.js class async-await console.log


【解决方案1】:

当记录对象获得console.logged 时出现在记录对象之前的字母是类的名称,正如它在运行的代码中所表示的那样。听起来运行的代码与您的源代码不同 - 也许它以某种方式被缩小,导致运行代码具有class Vo { 或类似的东西,即使源代码使用class MyClass {

如果代码在没有缩小或其他转换的情况下运行,当对象被记录时,您将看到 MyClass { 而不是 Vo {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多