【问题标题】:jsdom document.createWindow() returns empty for non-empty documentjsdom document.createWindow() 为非空文档返回空
【发布时间】:2012-07-13 03:52:27
【问题描述】:

我正在尝试按照“创建类似浏览器的 BOM/DOM/Window”部分下的 https://github.com/tmpvar/jsdom 上非常简短的设置说明进行操作。不幸的是,在第 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

那么,我做错了什么愚蠢的事情?

仅供参考的文档已正确创建。打印它会输出一个非常大的对象。

我使用的是 Mac。

【问题讨论】:

  • 这对我有用,但不知道为什么会出现这些错误。
  • Node.js 版本和 jsdom 版本?

标签: javascript node.js jsdom


【解决方案1】:
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);

【讨论】:

  • var txt = window.document.body.innerHTML;
【解决方案2】:

问题是由于 Contextify 的安装错误。我习惯于在 Windows 或 *NIX 和 Mac 上进行开发,由于 *NIX 终端,假设我会使用 Make 之类的东西。通过使用命令行工具安装 Xcode 解决了问题,其中安装了 Make 等,解决了 Contexify 的安装错误,从而解决了整体问题。

【讨论】:

  • 是的,我遇到了同样的问题,这就是我的问题:我在我的 mac 上做了npm install,检查了它,当我们的 linux CI 机器上运行时,他们完全窒息了。现在我们只是在运行测试之前自动运行npm install jsdom,它会为当前环境获取正确的上下文。
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 2020-10-24
  • 2019-07-15
  • 1970-01-01
  • 2011-12-19
  • 2018-10-06
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多