2012-07-02 97 views
4

我試圖按照「創建類似瀏覽器的BOM/DOM /窗口」部分的https://github.com/tmpvar/jsdom上的簡短安裝說明進行操作。不幸的是,在第三行(.createWindow步驟)後,我做了console.log(窗口)並打印出一個空的對象。那裏應該至少有window.document,但是沒有。看起來好像document.createWindow的行爲與jsdom.createWindow相同。jsdom document.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。

+0

這適用於我,不知道爲什麼你會得到這些錯誤。 – Kishore

+0

Node.js版本和jsdom版本? –

回答

2

問題是由於與Contextify的安裝錯誤。由於* NIX終端的原因,我習慣於在Windows或* NIX和Mac上進行開發,假設我將擁有諸如Make之類的內容。通過安裝Xcode和命令行工具解決了這個問題,該工具安裝了Make等工具,它解決了Contexify的安裝錯誤,從而解決了整體問題。

+0

是的,我有同樣的問題,這對我來說是個問題:我在我的Mac上執行了'npm install',檢查了它,當我們的Linux CI盒子上運行時,它們完全窒息。現在我們只需在運行測試之前自動運行'npm install jsdom',它就可以爲當前環境提供正確的支持。 –

4
var jsdom = require('jsdom').jsdom; 
document = jsdom('<!doctype html><html><body>hello jsdom</body></html>'); 
window = document.createWindow(); 
console.log(window); 
var txt = window.document.body.innerHTML; 
console.log(txt); 
+0

var txt = window.document.body.innerHTML; – yukaizhao