Próbuję dostać jsdom pracować :)node.js jsdom
Oto kod:
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');
}
});
});
A oto błąd:
jsdom.js:171
features = JSON.parse(JSON.stringify(window.document.implementation._fea
^
TypeError: Cannot read property 'implementation' of undefined
Sprawdziłem czy strona jest pobierana i jeśli lib biblioteki jquery jest analizowany - są.
Moglibyśmy patrzeć na realizację 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]
Wydaje się, że .createWindow() nie powiedzie ...
I używam go na Cloud9.
Każda pomoc jest mile widziane.
Jaka wersja węzła i jsdom? Działa tutaj z węzłem v0.6.16 i jsdom 0.2.14. (Nawiasem mówiąc, możesz zrobić 'fs.readFileSync (path, 'utf8')' zamiast wywołania 'toString()' (do którego również prawdopodobnie powinieneś przekazać ''utf8'')). –
Wersja węzła to 0.6.8, a wersja jsdom to 0.2.14. – kal3v
jeśli kod jest po stronie serwera, myślę, że "okno" jest tylko od strony przeglądarki – ZiTAL