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

标签 javascript meteor iron-router

我无法让 Iron Router 和 Spiderable 在我的 Meteor.js 应用程序中很好地协同工作。如果我在本地主机上运行时使用 ?_escaped_fragment_= 测试 url,它一切正常,但是一旦我推送到我们的 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() 造成的。这可以通过注释掉错误端点上的订阅来调试,直到找到错误的发布。

关于javascript - Meteor.js Spiderable 和 Iron Router - 生产服务器上的光纤错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135534/

相关文章:

javascript - 如何使用 Meteor Template Helper 增加和显示变量计数器?

javascript - "return doc && doc.userId === userId;"不应该返回 false 吗?

meteor - 使用 Meteor 进行 SEO 的动态 URL 变量

meteor - Iron-Router Wait-On 不等待 yield

javascript - 为什么我的 event.target 不工作?

javascript - 使用 JavaScript 删除超过 1 个选择选项

javascript - 未捕获的 TypeError : Meteor. Cron 不是构造函数

javascript - 不理解 JavaScript 原型(prototype)

javascript - Unix 纪元时间 : Adding days

javascript - 带有 Meteor 显示数据到模板的 Iron 路由器