覆盖节点中的默认“控制台”是否存在真正的危险?

时间:2013-12-04 07:17:58

标签: javascript node.js

我是一个习惯驱动的生物,而console.log / console.error / etc恰好是我本能地用来打印出来的东西。但是,我正在尝试将所有登录节点驱动到'winston'。我更喜欢在我的文件顶部执行类似var console = require('./modules/logger');之类的操作,然后只需使用console.whatever往常...根据需要使用额外的参数(否则api几乎相同)。由于这是本地化到我正在使用的文件而不是某种全局变化,将“控制台”设置为该模块的导出是否有任何危险?并不只是“好吧,它可能让其他人感到困惑”。

我确实注意到this question弹出一个类似的问题,但它并没有真正回答它背后是否存在危险。还有一些问题要问你是否可以覆盖某些节点的核心,但我不这样做 - 我只是使用与“魔术”全局相同的名称制作本地引用。

1 个答案:

答案 0 :(得分:1)

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

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

如果在模块或功能范围内进行替换,则只会影响该范围内的引用。