不能用zombie.js执行javascript?

时间:2011-02-28 08:16:19

标签: javascript node.js zombie.js

好的,我是node.js的新学习者: 当我尝试加载google.com,并在页面中执行脚本时,如下所示:

var zombie=require("zombie");
browser = new zombie.Browser({ debug: true })
browser.visit("http://www.google.com",function(err,_browser,status){
    if(err){
        throw(err.message);     
    }
})

但得到错误:

28 Feb 16:06:40 - The onerror handler

 on target 

{ frames: [ [Circular] ],
  contentWindow: [Circular],
  window: [Circular],
…………………………

我该怎么办?

1 个答案:

答案 0 :(得分:7)

实际错误消息在错误输出的一部分中隐藏。在browser.visit函数中,添加...

console.log(err.message);

......高于throw(err.message);。这应该可以让你更好地指出出现了什么问题:)

编辑:在www.google.com上测试了节点0.4.1 / zombie 0.9.1后,它看起来像是一个javascript错误(ILLEGAL TOKEN)导致问题。您可以通过设置僵尸代码来规避javascript错误:

browser = new zombie.Browser();
browser.runScripts = false; // this disables executing javascript
browser.visit("http://www.google.com/", function (err, browser) {
  if (err) { console.log('Error:' + err.message); }
  else { console.log('Page loaded successfully'); }
  // ... rest of your code here
});

就个人而言,我没有发现当前的僵尸错误输出非常有用,所以我更喜欢关闭它并在出现问题时显示一个简单的console.log消息。

最后,您还可以通过将debug: true传递给浏览器功能来调试错误:

browser = new zombie.Browser({ debug: true });

这将输出所有调用(包括ajax),并可能有助于查明错误的来源。

祝你好运!