我有兴趣为其中一个项目进行一些服务器端 DOM 操作,因此我决定看一下node.js,尤其是jsdom。我对node.js完全陌生,所以我的错误可能很明显,但无论如何我都无法在任何地方找到我的问题的解决方案......
首先,我在本地运行 Windows 上的节点,并且还使用在线 IDE cloud9
值得一提的是,我在为 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,错误消失了......(仍然不太确定这是正确的做法......)。所以,最后当我尝试运行这个片段时
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,从这里获取已编译的 contextify ,安装绑定并将其添加到 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 工作区,不要害羞。
任何帮助表示赞赏。也许还有其他更好的方法来完成我想要的。
谢谢。