【发布时间】:2012-08-18 06:38:03
【问题描述】:
我有兴趣为其中一个项目进行一些服务器端 DOM 操作,因此我决定查看node.js,尤其是jsdom。我对 node.js 完全陌生,所以我的错误可能很明显,但无论如何我都无法在任何地方找到我的问题的解决方案......
首先我在Windows本地运行node,也使用在线IDEcloud9
值得一提,因为我在为 node 安装最新的 jsdom 包(即 0.2.15)时遇到了麻烦,因为必需的依赖项 contextify 在 Windows 下无法编译(需要 C++ 和 Python,而且我发现 npm 没有支持构建 C++ 包)。所以我采取了两种替代方法:
-
我安装了一个不依赖于 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,错误消失了......(仍然不确定这是正确的做法......)。所以,最后当我尝试运行这个 sn-p
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 运行。 -
我尝试做的另一件事是安装最新的 jsdom@0.2.15,从 here 上获取已编译的 contextify,安装 bindings 并将其添加到 contextify/node_modules,因为 contextify 依赖于它。我根本无法让它工作=(没有浪费太多时间,因为这似乎是一种错误的方法,并且 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 workspace,不要害羞。
任何帮助表示赞赏。也许还有其他更好的方法来完成我想要的。
谢谢。
【问题讨论】:
-
这并不是一个真正的答案,而是一个提示,我确实有机会使用它,但github.com/MatthewMueller/cheerio 似乎比 jsdom 更有趣,jsdom 速度很慢,只能解析格式良好的 html。
-
谢谢@3on!我能够在不到半分钟的时间内安装它并开始与cheerio 混在一起!我肯定会仔细看看。一直在搞乱 jsdom 我知道有更好的方法 ;)
标签: jquery node.js jsdom cloud9-ide contextify