我正在尝试让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库是否被解析--它们是。
我们可以看看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上运行它。
欢迎任何帮助。
发布于 2012-04-24 21:37:49
我找到了这个问题的答案。
可以在http://support.cloud9ide.com/entries/21243717-accessing-your-private-running-project-via-javascript-or-curl上找到其中的一部分。
因此,为了使jsdom在cloud9上工作,需要使用较旧的版本(如0.2.1),并使用较旧版本的node (如cloud9支持的0.4 )运行脚本。
发布于 2012-08-25 05:11:16
正如https://github.com/tmpvar/jsdom/issues/436报告的那样,这可能是由于没有安装contextify而导致的。理论上,jsdom有一个填充程序,允许它在没有上下文的情况下工作,这就是为什么它将其列为可选模块而不是必需模块,但这个填充程序似乎被打破了(参见https://github.com/tmpvar/jsdom/issues/456)。
因此,到目前为止,您需要安装contextify来使用最新的jsdom。根据您的操作系统和环境,可能会出现问题的原因有几个。运行npm install contextify,然后跟踪该问题。
要尝试的事情取决于你的根本问题是什么:-确认你已经安装了Python 2.7或更高版本,并最好安装了2.7.3。还要验证它是在您输入python --version时运行的,并且您的PYTHONPATH是正确的。- sudo npm install contextify - npm缓存清理;npm install contextify --force
发布于 2013-05-30 17:19:14
尝试升级jsdom。我在旧版本的jsdom (0.3.x)中遇到了完全相同的错误。然后我删除了它并安装了当前的(jsdom@0.6.5)版本,现在它可以工作了。
https://stackoverflow.com/questions/10143288
复制相似问题