我现在看到这次崩溃了,对节点光纤基础架构还不够熟悉,以了解在哪里可以解释错误或仪器代码...
Meteor server running on: http://localhost:3000/
W202407-10:06:05.740(-8)? (STDERR) /Users/dauser/.meteor/tools/0b2f28e18b/lib/node_modules/fibers/future.js:173
W202407-10:06:07.363(-8)? (STDERR) throw(ex);
W202407-10:06:07.363(-8)? (STDERR) ^
W202407-10:06:07.363(-8)? (STDERR) RangeError: Maximum call stack size exceeded
=> Exited with code: 8
=> Meteor server restarted
据我了解,某些事情反复出现了一些过于热情的,服务器堆栈爆炸了,它崩溃了。不幸的是,我对这个有问题的功能在哪里并不了解 - 我看着我的deps.autorun呼叫(目前只有一个),这似乎并不是麻烦。我的代码没有明确的递归实施,我没有任何理由怀疑大型对象正在传递。显然,我当然不确定。
我真的只是在寻找有关如何启动代码的建议,以向我展示事情到底到达的位置。由于流星在幕后做很多事情,因此,如果有人可以给我一些关于在哪里看的指针,那将非常有用。
只是回到这一点,仍然对要寻找的地方仍然迷失了方向。 这个 建议更新到节点0.11.x将为我提供更多信息,但是在崩溃时,这样做似乎并没有添加更多细节。
崩溃发生在任何页面交互之后 - 即,服务器启动并运行正常,但是如果我在浏览器中重新加载或与页面本身进行交互,boom!
根据大众需求,这是服务器代码:
isAuthorized = () ->
console.log "checking authorization"
this.userId == Assets.getText('authorizedUsers')
Meteor.methods(
isAuthorized : isAuthorized
filePickerKey : () ->
# TODO: properly abstract this, rather than copy/paste...
if this.userId == Assets.getText('authorizedUsers')
Assets.getText('fpKey')
else
Meteor.Error 403, 'Error 403: Forbidden')
Unvure.js的Uncommenting第172行没有提供更多详细信息:
I2041-15:52:07.363(-8)? Resolve cb threw Maximum call stack size exceeded
而且,这是我在尝试使用节点检查员时遇到的麻烦。在过去的半小时中,我一直在玩这个游戏,所以我可能只是犯了一些基本错误,但是:我通过NPM(NPM Install -G Node-node-inspector)安装了节点检查员。
然后,我尝试
$ node-inspector &
[1] 3408
$ Node Inspector v0.6.2
info - socket.io started
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
$ meteor &
[2] 3413
$ [[[[[ ~/Projects/indefinite-ways ]]]]]
=> Meteor server running on: http://localhost:3000/
$ kill -s USR1 3413
Hit SIGUSR1 - starting debugger agent.
debugger listening on port 5858
到目前为止,一切都很好。此时,我的浏览器中没有打开客户端(即没有指向Localhost:3000的标签)。我打开一个指向Localhost:5858的Chrome Tab,并查看Meteor.js的来源,我在Meteor.js的第6行上设置了一个断点
var Fiber = require('fibers');
然后打开“流星客户端”选项卡(Localhost:3000),并再次弹出上述堆栈溢出。调试器不会在第6行上停止,或以任何其他方式表明它已经注意到了。如果我在第3行中设置断点,也是如此。