遇到神秘的引用错误(使用节点v 0.4.9)
我写了一个节点程序来抓取url内容。 由于很多东西都被扔进机器,我有一个uncaughtException
的进程监听器,只是把错误结果放到日志文件中,而不是让它杀死守护进程。 最近浏览这个日志文件,我发现有些不妥之处。 这是一个经常被抛出的错误和堆栈跟踪:
堆栈跟踪:
ReferenceError:GEL没有在Timer.callback(timers.js:Object._onTimeout)处定义(http://www.freep.com/article/20110809/ENT04/110809051/1001/news:undefined:undefined:2:25) 83:39)
我知道的信息量不大 当然,我磨练了我的GEL
源代码。 然后我编写了我所有的节点模块依赖关系(没有那么多)。 然后我为节点寻找GEL
。 然后我用v8换了GEL
。 然后我停下来,问StackOverflow …我做错了什么? (在我的代码中,我没有做任何不合理的事情,比如试图评估随机string或者其他东西。)
重要的是:节点v 0.4.9 …认为它也会在v 0.4.10上抛出
我解决了这个问题。 这实际上是我的代码的错。 我正在debugging的代码是使用jsdom
模块,它是从我正在抓取的网页中parsingjavascript。 我通过改进我的regex
解决了我所遇到的问题,该regex
除去了<script>
标记,并将一个额外的features
parameter passing给了我的jsdom.env
调用:
jsdom.env({ html: myHtml, done: myCallback, url: url, features : { FetchExternalResources : [], ProcessExternalResources : false } });