我正在使用Jimp库进行一些图像处理。单步执行read
方法,我看到最后一行命中是返回一个promise。一旦它返回,.then
就会抛出一个错误,好像承诺永远不会从read
返回。
错误:无法读取属性'然后'未定义
来自jimp的源代码(明确返回承诺):
Jimp.read = function(src, cb) {
var promise = new Promise(
function(resolve, reject) {
cb = cb || function(err, image) {
if (err) reject(err);
else resolve(image);
}
if ("string" != typeof src && ("object" != typeof src || !Buffer.isBuffer(src)))
return throwError.call(this, "src must be a string or a Buffer", cb);
var img = new Jimp(src, cb);
}
);
return promise;
}
我的代码:
var jimp = require('jimp');
var nano = require('nano');
var _ = require('underscore');
var Common = require('../models/Common');
var util = require('../utils/helper');
var fs = require('fs');
module.exports.changeLogo = function changeLogo(user, file) {
var theFile = file.destination + file.filename; //file.path?
jimp.read(theFile).then(function(logo) {
fs.unlink(theFile);
logo.resize(jimp.AUTO, 150)
logo.getBuffer(file.mimetype, function(err, buffer) {
return Common.addAttachment(user, 'logo' + util.getFileExtension(file.filename), buffer, file.mimetype);
})
})
.catch(function(err) {
console.log(err);
})
};
我在运行jimp.read(theFile)之前中断,并在控制台中运行:
var test = jimp.read(theFile);
test;
这给了我#<Promise>
typeof测试是一个对象。