我是一个习惯驱动的生物,而 console.log/console.error/etc 恰好是我本能地用来打印东西的东西。但是,我正在尝试将我所有的登录 Node 都驱动到“winston”。我更喜欢在我的文件顶部做一些像 var console = require('./modules/logger');
这样的事情,然后像往常一样使用 console.whatever ..利用额外的参数根据需要(否则 api 几乎相同)。由于这是本地化到我正在使用的文件而不是某种全局更改,因此将“控制台”设置为该模块的导出是否有任何危险?而不仅仅是“好吧,这可能会让其他人感到困惑”。
我确实注意到了 this question弹出一个类似的问题,但它并没有真正回答它背后是否存在危险。还有一些其他问题询问您是否可以覆盖 Node 的一些核心,但我没有这样做 - 我只是使用与“魔术”全局相同的名称进行本地引用。
最佳答案
除了可能以非标准(即意外)方式覆盖现有控制台功能外,我认为用您自己的对象替换全局控制台没有任何危险,只要它提供所有预期的功能和调用约定(功能签名)作为默认控制台。我已经做过很多次了,没有问题。
如果您在全局控制台上使用与其他代码预期不同的签名为现有函数提供一些非标准实现,您一定会遇到问题。
如果您在模块或函数范围内进行替换,则只会影响该范围内的引用。
关于javascript - 覆盖 Node 中的默认值 'console' 是否存在任何真正的危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369342/