我可以通过在节点的全局范围内执行蓝鸟来覆盖ES6的承诺吗?

我想使用蓝鸟的Promise / A +开放标准的实现,并重写本地ES6 Promise 。 我还希望bluebird实现在随后导入的模块中随处可用,而不必在每个模块中都要求。 蓝鸟的入门页面告诉我:

var Promise = require("bluebird"); 

,这导致覆盖原生的Promise元素。 因为蓝鸟是规范的超集,它不会破坏现有的代码,因此应该是安全的使用。

但是,因为我知道这被认为是不好的做法:

  1. 扩展或取代原生语言,和
  2. 定义全局variables,以便在依赖于它的需求链中使用

,当我想将其包含在节点应用程序的基本脚本中时,我很谨慎:

 import Promise from 'bluebird'; global.Promise = Promise; 

这是不好的做法? 我应该坚持在每一个文件中导入蓝鸟吗?

在过去的四年中,我在代码中已经完成了数百次,所以在每月1000万次的下载中有很多其他代码。

官方支持将本地实现与蓝鸟交换。

我做

 const Promise = require("bluebird"); 

以每个文件为基础。 请注意,通常您可以将API提供一次,然后避免调用Promise – 最多调用.resolve