これは、Node RangeError:Maximum call stack size exceededというエラーメッセージに関する他の質問とは異なります。このエラーメッセージが表示される理由を正確に知っているからです。 。それは私が再帰しているために起こっています。
ありがとう。
node --help
から:
node --max-stack-size=val
更新:コメントが示すように、ヘルプテキストにはまだ--max-stack-size
オプションがリストされていますが、ノードv0.10.xでは、代わりに--stack-size
を使用する必要があります。
node --stack-size=val
ノードバージョン5および6では、最大スタックサイズを設定するオプションが「--stack_size」(アンダースコア付き)であることを確認しました。
$ node --v8-options
[...]
--stack_size (default size of stack region v8 is allowed to use (in kBytes))
type: int default: 984
最大スタックサイズを増やすには、次のように発行します。
$ node --stack_size=1200
他の人が述べたように、この値を大きくするとセグメンテーションエラーが発生する可能性があることに注意してください。バージョン6での私にとっての最大安全値は1361ですが、バージョン5ではより高いようです。
全体像を見ると、スタックサイズを大きくしても問題がすべて解決しない場合があります。ノードで再帰関数を記述する場合、バージョン6は適切な末尾呼び出しをサポートするため、最良の戦略は tail-recursivemanner で記述することです。これにより、スタックサイズのオーバーフローが解消されます。