不能bluebird.Promisifyall gm

时间:2016-08-30 16:23:11

标签: bluebird gm

gm发出gm().write() expects a callback function错误。写函数来自fs所以我也宣传了它。它仍然不起作用。

var gm = bluebird.promisifyAll(require("gm"));
var fs = bluebird.promisifyAll(require("fs"));

gm(filePath).resize(null, 128).write(file)
    .then(function() {
        console.log("Done");
    })
    .catch(function(err) {
        console.log(err);
    });

如何使用gm承诺?

1 个答案:

答案 0 :(得分:1)

Bluebird使用promisifyAll()进行宣传的正常方案会创建返回承诺的.writeAsync()。它根本不会改变.write()。这假设gm()返回的对象是Bluebird可以通过gm.prototype获得的内容。

所以,你要这样做:

const gm = require("gm");
bluebird.promisifyAll(gm.prototype);

gm(filePath).resize(null, 128).writeAsync(file).then(function() {
    console.log("Done");
}).catch(function(err) {
    console.log(err);
});

注意:除非您自己直接使用fs promisified方法,否则您不必宣传fs模块。