Ich bin neu bei NodeJs, was ich versuche zu tun ist, um die gesamte URL meiner Website (mit Javascript und jquery aktiviert) zu überprüfen und überprüfen, dass die URL eine bestimmte Zeichenfolge enthält.Jsdom Wurf Fehler für einige URLs
Um dies zu tun, ich bin mit jsdom, aber wenn ich starte das Skript extrahiert nur eine URL und dann stürzt diesen Fehler geben:
timers.js:110
first._onTimeout();
^
TypeError: Property '_onTimeout' of object [object Object] is not a function
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
Sicherlich ist es etwas falsch, aber ich verstehe nicht, wo. . mein Skript
Dies ist:
var request = require('request');
var jsdom = require('jsdom');
request({ uri: 'http://www.example.com' }, function (error, response, html) {
if (!error && response.statusCode == 200) {
var doc = jsdom.jsdom(html, null, {
features: {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script'],
MutationEvents : '2.0',
}
});
var window = doc.createWindow();
jsdom.jQueryify(window, "http://code.jquery.com/jquery-1.5.min.js", function() {
var $ = window.jQuery;
$('a').each(function(i, element){
var a = $(this).attr('href');
console.log(a);
if (a.indexOf('string') != -1) {
console.log('The winner: '+a);
//return a;
}
});
window.close();
});
}
});
Ich habe das gleiche Problem, aber nur auf einigen URLs. Ich habe noch nicht festgestellt, ob es sich um einen Fehler handelt, der durch die tatsächliche Ausführung von Skripten im Scraped-HTML ausgelöst wird, oder ob es sich um einen internen Fehler im Jsdom-Code handelt. Zeichen zeigen auf beide gerade jetzt :) –
Ich machte eine Pull-Anfrage gemäß @ faridNouriNeshat 's Rat: https://github.com/tmpvar/jsdom/pull/1186 –