我编写了一个 Node 程序来抓取 url 内容。由于很多东西被扔进和扔出机器,我有一个 uncaughtException 的进程监听器,并且只是将错误结果扔到日志文件中,而不是让它杀死守护进程。最近查看该日志文件,我发现有些不对劲。这是一个经常抛出的错误和堆栈跟踪:
堆栈跟踪:
ReferenceError: GEL is not defined at Object._onTimeout (http://www.freep.com/article/20110809/ENT04/110809051/1001/news:undefined:undefined:2:25) at Timer.callback (timers.js:83:39)
我知道信息不多。自然地,我对 GEL
的源代码进行了 rgrep。然后我 rgrepped GEL 的所有 Node 模块依赖项(没有那么多)。然后我 rgrepped GEL Node 。然后我 rgrepped v8 的 GEL。然后我停下来问 StackOverflow...我做错了什么? (我没有在代码中做任何不合理的事情,例如尝试评估随机字符串或诸如此类的事情。)
重要: Node 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
}
});
关于node.js - 遇到神秘的引用错误(使用 Node v 0.4.9),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035143/