如何在不全局修改 fs 的情况下执行 Promise.promisfyAll(fs)(编写库时)



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')));

最新更新