jsdom document.createWindow() возвращает пустое значение для непустого документа

Я пытаюсь следовать очень коротким и простым инструкциям по настройке на https://github.com/tmpvar/jsdom в разделе «Создание BOM/DOM/Window в стиле браузера». К сожалению, после 3-й строки (шаг .createWindow) я делаю console.log(window), и он печатает пустой объект. Там должен быть как минимум window.document, но его нет. Кажется, что document.createWindow действует так же, как jsdom.createWindow.

Вот мой код:

var jsdom = require('jsdom').jsdom;

document = jsdom("<html><head></head><body>hello world</body></html>");
window = document.createWindow();

console.log(window); // output: {}

console.log(window.document.innerHTML); // error, cannot read innerHTML on undefined

Итак, какую глупость я делаю неправильно?

Документ FYI создан правильно. При печати выводится очень большой объект.

Я использую Mac.


person Anonymous    schedule 02.07.2012    source источник
comment
это работает для меня, и я не уверен, почему вы получаете эти ошибки.   -  person Kishore    schedule 03.07.2012
comment
Версия Node.js и версия jsdom?   -  person Ryan Olds    schedule 03.07.2012


Ответы (2)


Проблема возникла из-за ошибки установки с помощью Contextify. Я привык разрабатывать либо на Windows, либо на *NIX, а на Mac из-за терминала *NIX предполагал, что у меня будут такие вещи, как Make. Проблема была решена путем установки Xcode с помощью инструментов командной строки, которые, среди прочего, устанавливают Make, что устранило ошибку установки для Contexify, что решило общую проблему.

person Anonymous    schedule 03.07.2012
comment
Да, у меня была такая же проблема, и это было проблемой для меня: я сделал npm install на своем Mac, проверил его, и когда все запустилось на нашем Linux CI, они полностью задохнулись. Теперь мы просто автоматически запускаем npm install jsdom перед запуском тестов, и он получает правильный контекст для текущей среды. - person Nathan Friedly; 03.10.2012

person    schedule
comment
var txt = окно.документ.тело.innerHTML; - person yukaizhao; 12.07.2012