我有興趣爲一個項目做一些服務器端DOM操作,所以我決定看看node.js,特別是jsdom。我對node.js完全陌生,所以可能我的錯誤是顯而易見的,但從來沒有我不能找到解決方案,我的問題在任何地方...node.js:jsdom問題 - jQuery對象返回undefined
首先,我在本地Windows上運行節點,並使用在線IDE cloud9
值得一提的是,由於所需的依賴項contextify不能在Windows下編譯(需要C++和Python,而且作爲我發現npm不支持構建C++包)。所以,我花了兩個替代方法:
我已經安裝了不依賴於contextify的舊版本,也就是[email protected]。這是當我試圖逃避jsdom github repo CLOUD9採取簡單的測試腳本返回此警告的什麼我現在有
└─┬ [email protected] ├── [email protected] ├── [email protected] └── [email protected]
NPM列表
The "sys" module is now called "util". It should have a similar
我試圖解決這個替換所有SYS的提及到util,錯誤消失了......(儘管如此,仍然不確定這是否正確)。所以,最後當我試圖運行這個片段
var jsdom = require("jsdom"); jsdom.env("http://nodejs.org/dist/", [ 'http://code.jquery.com/jquery-1.5.min.js' ], function(errors, window) { console.log("there have been", window.$("a").length, "nodejs releases!"); });
我發現
window.$ === undefined
。試圖在cloud9上運行節點v0.6.x和節點v0.4.x,並在本地運行節點v0.8.7。我試圖做的另一件事是安裝最新[email protected],得到contextify來自here編譯,安裝bindings,並把它添加到contextify/node_modules作爲contextify是依賴於它。我是不是能夠使它在所有的工作=(沒有浪費太多的時間,因爲它似乎是一個錯誤的做法,contextify是不是最新的。
這裏的NPM列表
└─┬ [email protected] ├─┬ [email protected] │ └── [email protected] ├── [email protected] ├── [email protected] └── [email protected]
而且,這裏是我的cloud9 workspace,不要害羞玩弄。
讚賞任何幫助。也許還有其他更好的來完成我想要的東西。
感謝。
這是不是一個真正的答案更小費,我也必須使用它卻把機會,但https://github.com/MatthewMueller/cheerio似乎要比jsdom更有趣,它比較慢,只能解析格式良好的html。 – 3on
謝謝@ 3on!我能夠安裝它,並開始在不到半分鐘的時間內與cheerio鬼混!我一定要仔細看看。所有的時間與jsdom搞亂我知道有更好的辦法;) – dr3w