我正在制作一个可以调整图像大小的node.js应用程序。我可以使用jimp成功做到这一点。但是,调整图像大小不是异步的,并且在调整大小时会冻结UI。我想避免这种情况,因此我尝试使用Webworker创建图像。不幸的是,网络工作者无法使用Node.js函数(如require())来创建图像。为了解决这个问题,我尝试使用webworkify来允许我在Webworker内部使用Node.js函数。
// main.js
var work = require('webworkify');
var worker = work(require('./worker.js'); // Here is where I get the error
worker.addEventListener('message', function(e) {
if (e.data == 'done') { worker.terminate() }
}, false);
worker.postMessage({'buf': buf, 'filename': filename});
|
// worker.js
const Jimp = require('jimp');
module.exports = function(self) {
self.addEventListener('message', function(e) {
resize(e.data.buf, e.data.filename);
}, false);
function resize(buf, filename) {
Jimp.read(buf).then(image => {
image.resize(1920, Jimp.AUTO);
image.writeAsync(filename).then(cb => { self.postMessage('done') });
});
}
}
不幸的是,当我尝试创建工作程序时,出现以下错误:Uncaught TypeError: Cannot convert undefined or null to object at Function.keys (<anonymous>)
。如何解决此错误?