TypeError: аргумент «listener» должен быть функцией.Использование npm pixelmatch в узле JS - PullRequest
0 голосов
/ 19 мая 2018

Я использую nodeJS с mocha и chai и, что важно, pixelmatch.

Я сделал скриншоты и сделал их резервную копию.Я хочу сравнить их и создать папку diff с различиями, используя pixelmatch.Я продолжаю получать ошибку.

"TypeError: "listener" argument must be a function"

Ошибка относится к 0,66:

 img1 = fs.createReadStream(screenshot_path).pipe(new PNG()).on('parsed', doneReading())

Вот мой код скриншота сравнения:

const compareScreenshots = async (path) => {
     const diff_path = "./build/diff/" + path + ".diff.png"
     const screenshot_path = "./build/" + path + ".png"
     const backup_path = "./backup/" + path +".png"
    let img1, img2, filesRead = 0;

let doneReading = async function(){
    if(++filesRead < 2) return;

    var diff = new PNG({width: img1.width, height: img2.height});

    var numDiffPixels = pixelmatch(img1.data, img2.data, diff.data, img1.width, img1.height, {threshold: 0.1})

    diff.pack().pipe(fs.createWriteStream(diff_path));

    expect(numDiffPixels).to.equal(0) }

 img1 = fs.createReadStream(screenshot_path).pipe(new PNG()).on('parsed', doneReading())
 img2 = fs.createReadStream(backup_path).pipe(new PNG()).on('parsed', doneReading())
}

входной путь:

let page_title = await page.$eval('title', page => page.textContent.replace(/ /g,''))
...