2011-08-12 34 views
1

我寫了一個節點程序來抓取url內容。由於很多東西都會被扔進機器,所以我有一個進程監聽器uncaughtException,並將錯誤結果放入日誌文件中,而不是讓它殺死守護進程。最近瀏覽該日誌文件,我發現有些不妥之處。下面是被頻繁引發錯誤和堆棧跟蹤:遇到神祕的引用錯誤(使用節點v 0.4.9)

堆棧跟蹤:

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。然後我編寫了我所有的節點模塊依賴關係(沒有那麼多),用於GEL。然後我搜索了節點GEL。然後我爲了GEL而編寫了v8。然後我停下來,問StackOverflow ...我做錯了什麼? (我什麼也沒做太不合理了我的代碼就像試圖EVAL隨機字符串或諸如此類的東西。)

要點:節點U 0.4.9 ...想這也被趕開V 0.4.10

+0

我沒有什麼要補充的,只是讓你知道你不被忽略。我無法弄清楚這是怎麼回事。 – jcolebrand

+0

謝謝。是的,我認爲它顯然比節點或v8或scons更可能是我的代碼的錯誤。我會嘗試再次重現這一點,然後運行一些更好的調試工具。 (這不是一件容易的事情,因爲守護進程吞吐量很高,並且需要更多的日誌才能獲得必要的碎片來重現它)。我仍然對如何獲取引用錯誤感到困惑,據我所知,在任何地方都沒有提到'GEL'。 – small

回答

3

我解決了這個問題。這實際上是我的代碼的錯。我正在調試的代碼是使用jsdom模塊,該模塊正在解釋我正在抓取的網頁中的JavaScript。我定我被提高我regex是剔除了<script>標籤所遇到的問題,並通過一個額外的features參數我jsdom.env電話:

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