2012-08-23 45 views
1

我使用jsdom node.js模塊的應用程序,做一些網頁抓取來獲取它所需要的一些數據。當我在本地運行時,這工作得很好。在cloudfoundry JSDOM scraping不起作用

但是,當我將應用程序推送到cloudfoundry時,它崩潰了。該日誌如下:

====> /logs/stderr.log <====

/var/vcap/data/dea/apps/caretogethersandbox-0-8b20af9255bbf552d0f490cb60d0df55/app/node_modules/jsdom/lib/jsdom.js:171 features = JSON.parse(JSON.stringify(window.document.implementation._fea ^TypeError: Cannot read property 'implementation' of undefined

有我丟失的東西嗎?我很難過。我知道我寫的代碼工作正常,它似乎是模塊和cloudfoundry之間的問題。

回答

2

我能夠很容易地重現這個問題。看起來jsdom依賴於一個名爲Contextify的本地編譯庫(https://github.com/brianmcd/contextify),並且還可以從我可以收集的內容中綁定一些Python。 Cloud Foundry目前不支持這些功能。 Github上也有類似的問題。

https://github.com/tmpvar/jsdom/issues/436

最後的後在寫這表明使用兩個名爲Domino和的Zepto節點100%的JS庫的時候,他們很可能是值得一試。

+0

我真的很感動你花了時間來重現我的問題。這是要走的路。我也忍不住注意到我們爲同一家公司工作;) – ZacAttack

+0

啊!很好,事實證明node.js包也對Python有一些瘋狂的依賴!這實際上是爲什麼它不起作用! –

+0

Python的依賴,WTF?如果更多的原因溝渠jsdom爲啦啦隊。 – jamjam

1

只有你發佈的內容幾乎不可能給你一個直接的答案。

但我有幾點建議。

  1. 您的環境變量在生產中與開發過程中的工作不一樣。

  2. jsdom依賴通常在外部加載的jquery。 也許jquery沒有正確加載。

您是否聽說過cheerio。它是jsdom的替代品,它實現了jquery的一個子集,並且不需要在外部加載jquery。這比jsdom快得多。

你可以看這個作者創建的video介紹cheerio並瞭解它的更多好處。

使用cheerio github頁面上的示例代碼,並將其上傳到您的cloudfoundry帳戶,以查看是否一切正常。然後,你可以決定天氣切換到歡呼聲。

+0

是的,對於模糊的帖子感到抱歉,這只是這是我必須繼續的唯一信息。我很確定發佈代碼只會分散真正的問題。當我回到主計算機時,我會試試這個。 – ZacAttack