Unhandledpromiserejectionwarning: Error: Protocol Error (runtime.callfunctionon): Target Closed. (puppeteer)
I am new to Puppeteer and Node and I get this error when trying to execute the following code: 'use strict'; const puppeteer = require('puppeteer'); const evalLib = require('./oaa
Solution 1:
As Sven mentioned in the comments, you should use await
on every page
function that returns a promise (that's almost all of them) before closing the browser.
Try this:
'use strict';
const puppeteer = require('puppeteer');
const evalLib = require('./oaa_a11y_evaluation.js');
asyncfunctionevaluateRules() {
var ruleset = OpenAjax.a11y.RulesetManager.getRuleset("ARIA_STRICT");
var evaluator_factory = OpenAjax.a11y.EvaluatorFactory.newInstance();
evaluator_factory.setParameter('ruleset', ruleset);
evaluator_factory.setFeature('eventProcessing', 'fae-util');
evaluator_factory.setFeature('groups', 7);
var evaluator = evaluator_factory.newEvaluator();
var evaluation = evaluator.evaluate(window.document, document.title, document.location.href);
// var out = evaluation.toJSON(true);return;
}
(async() => {
const browser = await puppeteer.launch();
var page = await browser.newPage();
await page.goto('http://mihirkumar.com/', {waitUntil: 'load'});
await page.evaluate(evaluateRules); // <-- await hereawait browser.close();
})();
Solution 2:
Thanks for the responses. Making the function async is definitely a change for the better. My problem was that I wasn't injecting the OpenAjax javascript libraries into the loaded page. Once I did that with puppeteer's page.addScriptTag function things worked just fine.
Solution 3:
If U are using jest just add "exitOnPageError: false" on
module.exports= {
server: {
command:"PORT=3005 BROWSER=none react-scripts start",
port:3005,
launchTimeout:30000,
},
launch: {
headless:process.env.HEADLESS!=="false",
devtools:true,
},
exitOnPageError:false
};
Post a Comment for "Unhandledpromiserejectionwarning: Error: Protocol Error (runtime.callfunctionon): Target Closed. (puppeteer)"