私はnodejsを初めて使っています。私がやろうとしていることは、(javascriptとjqueryを有効にした)私のサイトのすべてのURLをスキャンし、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 –