我試圖讓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