重写节点中默认的“控制台”有没有真正的危险?

我是一个习惯驱动的生物,而console.log / console.error /等恰好是我本能地用来打印出来的东西。 不过,我试图把我所有的节点logging到“winston”中。 我宁愿做一些像var console = require('./modules/logger'); 在我的文件的顶部,然后就像平常一样使用console.whatever ..根据需要点击额外的参数(否则,API几乎是相同的)。 由于这是本地化到我正在使用的文件,而不是某种全球变化,是否有任何危险设置“控制台”该模块的导出? 而不是“好吧,这可能会让别人感到困惑”。

我确实注意到这个问题是作为一个类似的问题出现的,但是它并没有真正回答它背后是否存在危险。 还有一些其他的问题会问你是否可以重写一些节点的核心,但我没有这样做 – 我只是使用与“魔术”全球相同的名称进行本地引用。

除了可能以非标准(即意外)的方式覆盖现有的控制台function,只要它提供了所有预期的function和调用约定(函数签名)作为我自己的对象replace全局控制台的任何危险默认的控制台。 我已经做了很多次没有问题。

如果您在全局控制台上提供了一些与其他代码不同的非标准实现,那么您肯定会遇到问题。

如果您在模块或函数范围内进行replace,则只会影响该范围内的引用。