7

私は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 libが解析されているかどうかを確認しました-それらは解析されています。

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で実行しています。

どんな助けでも大歓迎です。

4

3 に答える 3

7

https://github.com/tmpvar/jsdom/issues/436で報告されているように、これは contextify がインストールされていないことが原因である可能性があります。理論的には、jsdom には contextify を使用せずに動作できるようにするシムがあります。そのため、必須モジュールではなくオプションとしてリストされていますが、このシムは壊れているようです ( https://github.com/tmpvar/jsdom/を参照)。号/456)。

そのため、現時点では、最新の jsdom を使用するには contextify をインストールする必要があります。OS と環境によっては、問題になる可能性のあるいくつかの理由があります。npm install contextify を実行し、その問題を追跡します。

根本的な問題に応じて試すこと: - Python 2.7 以降、最適には 2.7.3 がインストールされていることを確認します。また、 python --version と入力したときに実行されるものであり、PYTHONPATH が正しいことも確認してください。- sudo npm install contextify - npm cache clean; npm install contextify --force

于 2012-08-24T21:11:16.110 に答える
0

質問に対する答えを見つけました。

その一部はhttp://support.cloud9ide.com/entries/21243717-accessing-your-private-running-project-via-javascript-or-curlにあります。

そのため、jsdom を cloud9 で機能させるには、古いバージョン (0.2.1 など) を使用し、古いバージョンのノード (cloud9 でサポートされている 0.4 など) でスクリプトを実行する必要があります。

于 2012-04-24T13:37:48.950 に答える