首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js jsdom错误

Node.js jsdom错误
EN

Stack Overflow用户
提问于 2012-04-13 23:00:51
回答 3查看 8.1K关注 0票数 7

我正在尝试让jsdom正常工作:)

代码如下:

代码语言:javascript
复制
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');
        }
    });
});

下面是错误:

代码语言:javascript
复制
jsdom.js:171
    features   = JSON.parse(JSON.stringify(window.document.implementation._fea
                                                          ^
TypeError: Cannot read property 'implementation' of undefined

我已经检查了页面是否被获取,以及jquery库是否被解析--它们是。

我们可以看看jsdom.js的实现:

代码语言:javascript
复制
[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上运行它。

欢迎任何帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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 )运行脚本。

票数 0
EN

Stack Overflow用户

发布于 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

票数 7
EN

Stack Overflow用户

发布于 2013-05-30 17:19:14

尝试升级jsdom。我在旧版本的jsdom (0.3.x)中遇到了完全相同的错误。然后我删除了它并安装了当前的(jsdom@0.6.5)版本,现在它可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10143288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档