我试图让jsdom工作:)Node.js的jsdom错误
下面的代码:
var jsdom = require("jsdom");
var request = require("request");
var fs = require('fs');
var jquery = fs.readFileSync("./jquery-1.7.2.js", 'utf-8');
request({ uri:'http://nodejs.org/dist/' }, function (error, response, body) {
if (error && response.statusCode !== 200) {
console.log('HTTP request error... '+error);
}
jsdom.env({
html: body,
scripts: [
jquery
],
done: function(errors, window) {
console.log('done');
}
});
});
而这里的错误:
jsdom.js:171
features = JSON.parse(JSON.stringify(window.document.implementation._fea
^
TypeError: Cannot read property 'implementation' of undefined
我已如果检查到页面被抓取,如果jQuery的lib被解析 - 他们是。
我们可以看看jsdom.js的实现:
[snip]
exports.env = exports.jsdom.env = function() {
[snip]
window = exports.html(html, null, options).createWindow(),
features = JSON.parse(JSON.stringify(window.document.implementation._features)),
docsLoaded = 0,
[snip]
看来,.createWindow()不成功......
而且我上运行它Cloud9。
任何帮助,欢迎。
什么版本的节点和jsdom?它适用于节点v0.6.16和jsdom 0.2.14。 (顺便说一下,你可以使用'fs.readFileSync(path,'utf8')'而不是'toString()'调用(你可能也应该通过''utf8''))。 – 2012-04-13 16:36:38
节点的版本是0.6.8,jsdom的版本是0.2.14。 – kal3v 2012-04-15 09:55:04
如果代码是从服务器端我认为“窗口”只是从浏览器端 – ZiTAL 2012-04-16 07:21:28