Node.js:使用Webworkify在WebWorker中使用require

时间:2018-10-29 04:30:25

标签: javascript node.js

我正在制作一个可以调整图像大小的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>)。如何解决此错误?

0 个答案:

没有答案