Node.js jsdom错误

我正在试图让jsdom工作:)

代码如下:

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'); } }); }); 

这里是错误:

 jsdom.js:171 features = JSON.parse(JSON.stringify(window.document.implementation._fea ^ TypeError: Cannot read property 'implementation' of undefined 

我已经检查,如果页面被提取,如果jQuery的库parsing – 他们是。

我们可以看一下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] 

看起来.createWindow()不成功…

我在Cloud9上运行它。

任何帮助是受欢迎的。

正如https://github.com/tmpvar/jsdom/issues/436所报告的,这可能是由于未安装symxtify而导致的。 从理论上说,jsdom有一个垫片,它可以在没有任何争议的情况下工作,这就是为什么它被列为可选的而不是必需的模块,但是这个垫片似乎被破坏了(见https://github.com/tmpvar/jsdom/问题/ 456 )。

所以现在你需要安装使用最新版本的jsdom。 根据您的操作系统和环境,有几个原因可能是一个问题。 运行npm install contextify,然后追踪该问题。

要根据你的根本问题尝试的事情: – 确认你有Python 2.7或更高版本,最好安装2.7.3。 还要validation它是在你inputpython –version的时候运行的,而且你的PYTHONPATH是正确的。 – sudo npm install contextify – npm cache clean; npm安装contextify –force

我find了这个问题的答案。

可以在http://support.cloud9ide.com/entries/21243717-accessing-your-private-running-project-via-javascript-or-curl上find它的一部分。

因此,为了让jsdom在cloud9上工作,需要使用较旧的版本(如0.2.1),并使用较旧版本的节点(例如cloud9上支持的0.4)来运行脚本。

尝试升级jsdom。 我有一个老版本的jsdom(0.3.x)完全一样的错误。 然后我删除它,并安装了当前(jsdom@0.6.5)版本,现在它工作。