簡體   English   中英

Meteor.js Spiderable和Iron Router - 生產服務器上的光纖錯誤

[英]Meteor.js Spiderable and Iron Router - fiber error on production server

我在使用Iron Router和Spiderable在我的Meteor.js應用程序中很好地協同工作時遇到了麻煩。 如果我在本地主機上運行時測試了一個帶有?_escaped_fragment_=的網址,那么一切正常,但是當我推送到我們的DigitalOcean生產服務器時,我在嘗試同樣的事情時會一直收到以下錯誤(請訪問http://hreglobal.com /?_ escaped_fragment_ = ):

Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.
at Object.Meteor._nodeCodeMustBeInFiber (packages/meteor/dynamics_nodejs.js:9)
at _.extend.get (packages/meteor/dynamics_nodejs.js:21)
at RouteController.lookupOption (packages/iron:router/lib/route_controller.js:66)
at new Controller.extend.constructor (packages/iron:router/lib/route_controller.js:26)
at ctor (packages/iron:core/lib/iron_core.js:88)
at Function.Route.createController (packages/iron:router/lib/route.js:133)
at Function.Router.createController (packages/iron:router/lib/router.js:185)
at Function.Router.dispatch (packages/iron:router/lib/router_server.js:39)
at Object.router (packages/iron:router/lib/router.js:15)
at next (/opt/hre/bundle/programs/server/npm/webapp/node_modules/connect/lib/proto.js:190:15)

一直試圖找到原因幾天,並開始有點絕望。 歡迎任何指示!

這有幾個原因:

當這種情況發生在生產而非本地時,這可能意味着包裝有縮小問題。 要測試這個,你可以運行meteor build --debug,它會跳過縮小和部署。 或者你可以在本地運行meteor run --production,它會在縮小時在本地運行。 無論哪種方式都應該告訴你它是否是一個縮小問題。

生產問題但不是本地問題的另一個選擇是spiderable的超時問題。 可能值得增加超時以查看是否可以解決問題。 我會首先嘗試縮小。

第三個生產問題但不是本地問題與ROOT_URL錯誤有關。 這也值得快速檢查。 確保服務器本身可以訪問服務器配置使用的ROOT_URL。

如果在本地和生產服務器上發生這種情況,則可能是由於未正確返回ready()的發布調用引起的。 這可以通過在故障端點上注釋掉訂閱來調試,直到找到錯誤的發布。

是否在遠程主機上的腳本上安裝/訪問了phantomjs?

我安裝了一個更復雜的spiderable包:

https://atmospherejs.com/jazeee/spiderable-longer-timeout

這向我展示了一條實際的錯誤消息而不是無關Error: Meteor code must always run within a Fiber.

錯誤代碼似乎是:

spiderable: phantomjs not installed. Download and install from http://phantomjs.org/

事情開始后立即開始起作用:

sudo apt-get install phantomjs

如果這有助於將來的任何人......

我也遇到了這個問題。 我嘗試了我能想到的一切以及所有其他論壇建議的一切。

對我的修復是我的服務器! 我有一個使用AWS EC2的t2.nano,我已經用mup上傳了我的應用程序。

我花了很長時間才意識到這是原因......但如果我只有2個應用程序運行,一切正常。 然后我添加了第三個應用程序,這是出現問題的時候。 我猜這是由我運行的基本服務器無法處理我的應用程序的3個docker容器和mongo的第四個。

我也總是在使用mup上傳我的第三個應用程序時遇到問題。 我猜這可能是問題的一部分。

所以關鍵是......你的出版物等可能都可以,但是從服務器本身而不是應用程序獲得響應的時間也會對此產生影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM