나는 nodejs에 익숙하지 않은데, 내 사이트의 모든 URL (javascript 및 jquery 사용)을 검사하고 URL에 주어진 문자열이 들어 있는지 확인합니다. 일부 URL에 Jsdom 오류가 발생했습니다.
내가 jsdom을 사용하고이 작업을 수행하려면,하지만 난 시작할 때 스크립트는이 오류를주는 충돌 후 일부 URL을 추출 :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)
는 분명히 뭔가 잘못하지만 난 어디를 이해하지 않습니다. .
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();
});
}
});
동일한 문제가 있지만 일부 URL에서만 발생합니다. 나는 그것이 scraped html에서 스크립트의 실제 실행에 의해 던져지는 에러인지 또는 jsdom 코드의 내부 에러인지 여부를 아직 결정하지 못했다. 신호가 지금 두 지점을 가리킴 :) –
@faridNouriNeshat의 조언에 따라 당겨 요청을했습니다. https://github.com/tmpvar/jsdom/pull/1186 –