簡體   English   中英

Node.js jsdom錯誤

[英]Node.js jsdom error

我想讓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上運行它。

歡迎任何幫助。

https://github.com/tmpvar/jsdom/issues/436所述 ,這可能是由於沒有安裝contextify引起的。 理論上jsdom有一個墊片,允許它在沒有上下文的情況下工作,這就是為什么它被列為可選而不是必需的模塊,但是這個墊片似乎被破壞了(參見https://github.com/tmpvar/jsdom/問題/ 456 )。

所以現在你需要安裝contextify以使用最新的jsdom。 根據您的操作系統和環境,有幾個原因可能是個問題。 運行npm install contextify然后跟蹤該問題。

根據您的根本問題嘗試的事項: - 驗證您安裝了Python 2.7或更高版本並且最佳安裝2.7.3。 當你鍵入python --version並且你的PYTHONPATH是正確的時候,還要驗證它運行的那個。 - sudo npm install contextify - npm cache clean; npm install contextify --force

我找到了問題的答案。

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

因此,為了使jsdom在cloud9上運行,需要使用舊版本(如0.2.1)並使用舊版本的節點運行腳本(如0.4,支持cloud9)。

嘗試升級jsdom。 我對舊版jsdom(0.3.x)有完全相同的錯誤。 然后我刪除它並安裝了當前的(jsdom@0.6.5)版本,現在它可以工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM