プロジェクトの1つでサーバー側のDOM操作を行うことに興味があるので、node.js、特にjsdomを調べることにしました。私はnode.jsにまったく慣れていないので、おそらく私の間違いは明らかですが、それでもなお、私の問題の解決策をどこにも見つけることができませんでした...
まず、Windowsでノードをローカルで実行しており、オンラインIDEcloud9も使用しています
必要な依存関係のcontextifyがWindowsではコンパイルされないため(0.2.15)、ノードの最新のjsdomパッケージ(0.2.15)のインストールで問題が発生したため、言及する価値がありました(C ++とPythonが必要であり、npmはC ++パッケージのビルドをサポートしていないことがわかりました) 。だから私は2つの代替アプローチを取りました:
contextifyに依存しない古いバージョン、つまりjsdom@0.2.1をインストールしました。これが私が現在持っているもののnpmリストです
└─┬ jsdom@0.2.1 ├── cssom@0.2.5 ├── htmlparser@1.7.6 └── request@2.10.0
jsdom github repo cloud9から取得した簡単なテストスクリプトを実行しようとすると、この警告が返されました
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で実行しようとしました。私がやろうとしたもう1つのことは、最新のjsdom@0.2.15をインストールし、ここからコンパイルされたcontextifyを取得し、バインディングをインストールして、 contextifyがそれに依存しているのでcontextify/node_modulesに追加することでした。私はそれをまったく機能させることができませんでした=(これは誤ったアプローチのようであり、contextifyが最新ではないため、多くの時間を無駄にしませんでした。
これがnpmリストです
└─┬ jsdom@0.2.15 ├─┬ contextify@0.1.2 │ └── bindings@1.0.0 ├── cssom@0.2.5 ├── htmlparser@1.7.6 └── request@2.10.0
また、これが私のcloud9ワークスペースです。恥ずかしがらずに遊んでください。
助けていただければ幸いです。たぶん、私が望んでいたことを達成するために他にもっと良いものがあります。
ありがとう。