我写了一个节点程序来抓取URL内容。由于有很多事情进出机器,因此我有一个uncaughtException的进程侦听器,只是将错误结果放入日志文件中,而不是让它杀死守护程序。最近浏览该日志文件时,我发现有些不对劲。这是一个经常引发的错误和堆栈跟踪:

堆栈跟踪:


  ReferenceError:未定义GEL
      在Object._onTimeout
  (http://www.freep.com/article/20110809/ENT04/110809051/1001/news:undefined:undefined:2:25)
      在Timer.callback(timers.js:83:39)


我知道的信息不是很丰富。自然,我为GEL收集了源代码。然后,我为GEL重新分配了我所有的节点模块依赖项(没有那么多)。然后我为GEL重新分配节点。然后我为GEL重新安装了v8。然后我停下来,问StackOverflow ...我在做什么错? (我没有在代码中做任何不合理的事情,例如尝试评估随机字符串或其他。)

重要事项:节点v 0.4.9 ...认为它也会在v 0.4.10上抛出

最佳答案

我解决了这个问题。实际上这是我的代码的错。我正在调试的代码使用的是jsdom模块,该模块从我正在抓取的网页中解释javascript。我通过改进去除regex标记的<script>并将我的features调用传递了一个额外的jsdom.env参数来解决了我遇到的问题:

jsdom.env({
  html: myHtml,
  done: myCallback,
  url: url,
  features : {
        FetchExternalResources       : [],
        ProcessExternalResources     : false
        }
});

09-25 17:30