【问题标题】:nodejs module has warning messagenodejs 模块有警告信息
【发布时间】:2012-09-14 17:39:41
【问题描述】:

有什么办法可以让我包含的模块引起的警告消息静音?

我喜欢这个模块,但是每次我调用它们的函数时,控制台都会输出:

"Utf8String" type is deprecated, use "CString" instead

我正在制作控制台应用程序,因此希望隐藏此消息。

【问题讨论】:

  • 嗯,你用的是什么“模块”?
  • 有区别吗?我正在使用execSync

标签: node.js


【解决方案1】:

您收到的警告消息实际上来自节点而不是模块。 但是,该模块会导致警告,因为它调用了以前版本的节点中使用的 api。

我认为无论如何都不能告诉节点隐藏记录到控制台的警告消息。

如果您真的决定摆脱这些警告,您可以进入模块的源代码并进行查找和替换。

"Utf8String" to "CString"

我对另一个模块做了完全相同的事情,我也无法忍受那些消息。

【讨论】:

  • 所以...如果我升级节点(或安装我的软件包的任何人),那么我可能会通过添加与程序无关的错误消息来破坏我的所有程序。这对我来说似乎是个大问题。我很惊讶没有办法抑制节点警告。你确定吗?
  • 是的,每当节点升级时,它的一些 api 都会被删除或重命名。为了鼓励模块作者切换到新的 api 节点,尝试提供帮助并将警告消息记录到控制台。我很确定没有办法抑制这些消息,但不是 100%。
  • 原来这个警告来自模块,这可能就是它如此不具体的原因!
【解决方案2】:

在这种情况下,我需要的模块需要一个模块,该模块具有自定义代码,既使用了Utf8String,又触发了错误。

// alias Utf8String
var utfstringwarned = false
Object.defineProperty(types, 'Utf8String', {
    enumerable: false
  , configurable: true
  , get: function () {
      if (!utfstringwarned) {
        utfstringwarned = true
        console.error('"Utf8String" type is deprecated, use "CString" instead')
      }
      return types.CString
    }
})

并写在历史上

0.0.20 / 2012-06-27
===================

 - rename the `Utf8String` type to `CString` (#5)
 - make `Utf8String` an alias to `CString` and deprecated
 - more work on docs (not yet ready)

因此,作为临时解决方案,我可能会注释掉错误消息,或者作为更永久的解决方案,选择不同的模块。

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2012-06-09
    • 1970-01-01
    相关资源
    最近更新 更多