Meteor.js Spiderable和Iron Router - 生产服务器上的光纤错误

Rik*_*uta 12 javascript meteor iron-router

我在使用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)
Run Code Online (Sandbox Code Playgroud)

一直试图找到原因几天,并开始有点绝望.欢迎任何指示!

Tim*_*m C 2

造成这种情况的原因有以下几个:

当这种情况发生在生产中而不是本地时,这可能意味着包存在缩小问题。要测试这一点,您可以运行meteor build --debug,它会跳过缩小和部署。或者您可以使用meteor run --product 在本地运行,这将在本地运行并缩小。无论哪种方式都应该告诉你这是否是一个缩小问题。

针对生产问题而非本地问题的另一种选择是spiderable 的超时问题。可能值得增加超时看看是否能解决问题。不过我会先尝试缩小。

第三个生产问题(但不是本地问题)与 ROOT_URL 错误有关。这也值得快速检查。确保服务器配置使用的 ROOT_URL 可由服务器本身访问。

如果这种情况同时发生在本地和生产服务器上,则可能是由于发布调用未正确返回 read() 造成的。可以通过注释掉错误端点上的订阅来调试,直到找到错误的发布。