我在使用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)
一直试图找到原因几天,并开始有点绝望。欢迎任何指示!
答案 0 :(得分:2)
有几个原因:
如果在生产中发生这种情况但在本地不发生这可能意味着包装有缩小问题。要测试这个,你可以运行meteor build --debug,它会跳过缩小和部署。或者你可以在本地运行meteor run --production,它会在缩小时在本地运行。无论哪种方式都应该告诉你它是否是一个缩小问题。
生产问题而非本地问题的另一个选择是spiderable的超时问题。可能值得增加超时以查看是否可以解决问题。我会首先尝试缩小。
第三个生产问题但不是本地问题与ROOT_URL错误有关。这也值得快速检查。确保服务器本身可以访问服务器配置使用的ROOT_URL。
如果在本地和生产服务器上发生这种情况,则可能是由于未正确返回ready()的发布调用引起的。这可以通过在故障端点上注释掉订阅来调试,直到找到错误的发布。
答案 1 :(得分:0)
远程主机上的脚本是否安装了/可以访问phantomj?
我安装了一个更复杂的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
答案 2 :(得分:0)
如果这有助于将来的任何人......
我也遇到过这个问题。我尝试了我能想到的一切以及所有其他论坛建议的所有内容。
对我的修复是我的服务器!我有一个使用AWS EC2的t2.nano,我已经用mup上传了我的应用程序。
我花了很长时间才意识到这是原因......但如果我只有2个应用程序运行,一切正常。然后我添加了第三个应用程序,这是出现问题的时候。我猜这是由我运行的基本服务器无法为我的应用程序处理3个docker容器而第四个用于mongo。
我也经常在使用mup上传我的第三个应用时遇到问题。我猜这可能是问题的一部分。
所以重点是......你的出版物等都可以,但是从服务器本身而不是应用程序获得响应的时间也会对此产生影响。