私は今このクラッシュを見ています、そして、ノードファイバーインフラストラクチャに十分に精通していません。
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コール(現時点で1つだけ)を見ましたが、それは問題ではないようです。私のコードはどれも明示的な再帰で実装されておらず、大きなオブジェクトが渡されていると疑う理由はありません。明らかに、もちろん、私は本当によくわかりません。
私は本当に、物事が手に負えなくなっている場所を示すためにコードを装備する方法についてのアドバイスを探しています。 Meteorは舞台裏で多くのことをしているので、どこを見るべきかについて誰かが私にいくつかのポインターを与えることができれば本当に便利です。
これに戻ってくるだけで、どこを探しているかについてはまだかなり迷っています。 これ ノード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')
Future.jsの172行目の未解決は、詳細を提供しませんでした。
I2041-15:52:07.363(-8)? Resolve cb threw Maximum call stack size exceeded
そして、ここにノードインストペクターを使用しようとしているときに遭遇したトラブルがあります。私は過去30分間これで遊んでいるので、基本的なエラーをしているだけかもしれませんが、NPM(NPMインストール-Gノードインインストペクトル)を介して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タブを開き、meteor.jsのソースを参照してくださいmeteor.jsの行6にブレークポイントを設定しました
var Fiber = require('fibers');
次に、Meteorクライアントタブ(LocalHost:3000)を開き、前述のスタックオーバーフローが再びポップアップします。デバッガーは6行目で停止しません。または、他の方法では気づいたことを示します。 3行目でブレークポイントを設定した場合も同じです。