2012-07-02 51 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