PhantomJS意外冻结

时间:2015-07-21 10:16:18

标签: javascript phantomjs

我正面临着phantomjs最奇怪的问题。基于在我试图执行的js文件中注释函数,它是冻结/解冻的。这是我的代码:

var page = new WebPage(),
     url = 'https://example.org' + Date.now(),
     stepIndex = 0;


// Callback is executed each time a page is loaded...
 page.open(url, function (status) {
       if (status === 'success') {
         page.injectJs('jquery.js');
         page.injectJs('helper.js') ;
         parseResults() ;
         phantom.exit();
       } else {
         console.log(status) ;
         phantom.exit();
       }
 });


function parseResults(){
 page.evaluate(function() {


         console.log("Evaluating...") ;



         $(".menus ul li").each(function(i, obj){

                      category_name = $(this).find(".tabs__link").text().trim() ;

                      category = {
                                   "r_id" : r_id.toString(),
                                   "category_name" : category_name } ;



                      category_id = apicall("http://localhost:8000/menu_category/", category, "category_id") ;

                      console.log(category_name) ;

                      sub_menu_id = $(this).attr('data-menu_id').toString() ;

                      $("div[data-menu_id='"+sub_menu_id+"']").find('ul li').each(function(i, obj){
                                  dish = {
                                  "category_id": category_id.toString(),
                                  "name": $(this).find('.name').text()).trim(),
                                  "r_id":  r_id,
                                  "cost":$(this).find('.price').text()).trim()
                                  } ;
                                  console.log($(this).find('.name').text()).trim()) ;
                                  apicall("http://localhost:8000/menu_dish/", dish, "category_id") ;
                      }) ;

                                               }) ;

       });
}

page.onConsoleMessage = function (msg, line, source) {
     console.log('console> ' + msg);
 };


 page.onAlert = function (msg) {
     console.log('alert!!> ' + msg);
 };

phantom.onError = function(msg, trace) {
  var msgStack = ['PHANTOM ERROR: ' + msg];
  if (trace && trace.length) {
    msgStack.push('TRACE:');
    trace.forEach(function(t) {
      msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function +')' : ''));
    });
  }
  console.error(msgStack.join('\n'));
  phantom.exit(1);
};

上面的脚本在这样调用时冻结在终端:

> ./phtantomjs --web-security=false my_config.js

但是,如果我注释掉函数定义(而不是调用),它可以正常工作,使整个代码无用。这几个小时前工作正常,不知道为什么它现在破裂了。有线索吗?

0 个答案:

没有答案