gpt4 book ai didi

jquery - jsdom 的奇怪错误 - node.js

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:05 25 4
gpt4 key购买 nike

我正在尝试运行示例中的简单代码:

require.paths.unshift('/etc/npm'); // path to modules
var httpAgent = require('http-agent'),
jsdom = require('jsdom'),
sys = require('sys');

var agent = httpAgent.create('www.twitter.com', ['', 'about']);

agent.addListener('next', function (e, agent) {
var body = agent.body;
var window = jsdom.jsdom(body, {},{}).createWindow();
jsdom.jQueryify(window, 'http://code.jquery.com/jquery-1.4.2.js', function (window, jquery) {
agent.next();
});
});

agent.addListener('stop', function (agent) {
sys.puts('the agent has stopped');
});

agent.start();

但它在这一行返回很多错误:

var window = jsdom.jsdom(body, {},{}).createWindow();

错误:

kir@nas:~/node$ node test.js

/usr/local/lib/node/.npm/jsdom/0.1.21/package/lib/jsdom/browser/index.js:197
if (!dom.HTMLDocument.write) {
^
TypeError: Cannot read property 'write' of undefined
at Object.browserAugmentation (/usr/local/lib/node/.npm/jsdom/0.1.21/package/lib/jsdom/browser/index.js:197:24)
at Object.jsdom (/usr/local/lib/node/.npm/jsdom/0.1.21/package/lib/jsdom.js:15:25)
at EventEmitter.<anonymous> (/home/kir/node/test.js:12:22)
at EventEmitter.emit (events:27:15)
at Object.emit (/usr/local/lib/node/.npm/http-agent/0.1.0/package/lib/http-agent.js:180:41)
at /usr/local/lib/node/.npm/http-agent/0.1.0/package/lib/http-agent.js:145:14
at IncomingMessage.<anonymous> (/usr/local/lib/node/.npm/request/0.10.0/package/lib/main.js:89:7)
at IncomingMessage.emit (events:41:20)
at HTTPParser.onMessageComplete (http:107:23)
at Client.onData [as ondata] (http:848:27)

我有Ubuntu 10.10和稳定的node.js 0.2.5。搞什么?

最佳答案

对于 jsom 来说很正常,它正在进行中,DOM API 非常庞大,重新实现所有浏览器怪癖需要花费大量时间。

但首先你的电话 jsdom.jsdom(body, {},{}).createWindow();是错误的,第二个参数应该是一个完全配置的 DOM 对象,如果您不提供只需传递 null使其恢复为默认值。

但之后就一直是海龟了。

例如 Twitter 就是这么做的 window.top.location ,原来jsdom没有定义window.top轰隆隆!

解决这个问题...是的,海龟。错误不会停止,如果您有兴趣彻底修复它,请打开 <npm folder>/jsdom/0.1.21/package/lib/jsdom/level2/languages/javascript.js您可以在那里记录代码并对 window 进行修复对象直到它起作用。

关于jquery - jsdom 的奇怪错误 - node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com