0

我收到一个错误,该错误似乎源于其中一个页面脚本。

file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1
return c.apply(undefined,a)}catch(d){webengage.eLog(d);if(!b){throw d}}}else{t
                                                                    ^
TypeError: Cannot call method 'call' of undefined
    at new exports.NOT_IMPLEMENTED (/usr/local/lib/node_modules/jsdom/lib/jsdom/browser/utils.js:9:13)
    at Object.webengage.eLog (file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1:366)
    at t.extend.u (file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1:19160)
    at Object.t.extend.error (file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1:19299)
    at file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1:66518
    at Object.webengage.withELog (file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1:640)
    at Timer.<anonymous> (file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1:937)
    at Timer.exports.setInterval.timer.ontimeout (timers.js:234:14)

我从以下代码中收到此错误:

try {
  var document = jsdom.jsdom(str, null, {});  
} catch(e) {
  console.log("Got ERROR...");
  console.log(e);
}
console.log("Page Document Loaded.");
var window = document.parentWindow;
//console.log(window.document.innerHTML);
console.log(window.innerWidth);
console.log(typeof window.document.getElementsByClassName);

str是我之前得到的html。我能够看到打印结果,html 的 innerWidth 和 typeof getElementsByClassName 即。功能。但是大约 20 秒后,我收到了上述错误,我的应用程序崩溃了,没有Got ERROR...从上面打印。

我的第一个问题是为什么我的应用程序在打印最后一件事后仍在运行。这是 jsdom 的正常行为吗,它会一直运行,就像在浏览器中脚本一直运行直到给出 window.close() 一样。

实际问题是,我该如何解决这个问题。我想在这个窗口对象中触发一些事件并与之交互,但它一直在崩溃。

脚本的 url 有点混乱: file://cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1

这是因为页面在 ajax 调用中使用 url 获取此脚本资源: //cdn.widgets.webengage.com/js/widget/webengage-min-v-3.0.js:1

尽管 jsdom 能够获取资源,但我检查了该脚本是否有显示错误的那一行。

4

0 回答 0