AFAICT,如果我正在编写一个库并且我使用Promise.promisifyAll(fs);
,这会就地修改fs
模块(而不是返回修改后的副本)。因此,如果有人导入我的库,这也会产生为他们修改fs
的副作用。
有没有办法避免这种情况?
您可以对不想更改的全局使用包装器对象:
var Promise = require('bluebird');
var fs = Promise.promisifyAll(function(orig) {
var myFs = {};
for (var m in orig)
myFs[m] = orig[m]; // .bind(orig); is probably unnecessary
return myFs;
}(require('fs')));