我写了一个节点程序来抓取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
}
});