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
承诺?
答案 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
模块。