凌驾于违约之上真的有危险吗;控制台'在节点中

Is there any real danger to overriding the default 'console' in node?

本文关键字:控制台 节点 于违约 有危险 真的      更新时间:2024-03-17

我是一个习惯驱动的生物,console.log/console.error/etc恰好是我本能地用来打印东西的东西。然而,我正试图将我所有的登录节点都驱动到"winston"。我更喜欢在我的文件顶部做一些类似var console = require('./modules/logger');的事情,然后像往常一样使用console。。根据需要使用额外的参数(否则api基本相同)。由于这是本地化到我正在处理的文件中的,而不是某种全局更改,因此将"控制台"设置为该模块的导出是否有危险?不仅仅是"好吧,这可能会让其他人感到困惑"。

我确实注意到这个问题弹出了一个类似的问题,但它并没有真正回答背后是否存在危险。还有一些其他问题问你是否可以覆盖节点的一些核心,但我没有这么做-我只是使用与"魔法"全局相同的名称进行本地引用。

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

如果您确实在全局控制台上为现有函数提供了一些非标准的实现,其签名与其他代码所期望的不同,那么您肯定会遇到问题。

如果在模块或函数作用域中进行替换,则只有该作用域中的引用才会受到影响。