2016-07-28 9 views
1

クライアント側の反応からサーバー側のレンダリングに切り替えることにしたので、コンポーネントを作成してアプリケーションで使用し始めました。reactjs.net - 潜在的なスタックオーバーフローが検出されました 'エラー

私は、このエラーに出くわししかし:だから私は、このエラーの原因かわからないが、私はそれはいくつかのコードだと思うstack-trace

[ScriptEngineException: Unknown error (RangeError); potential stack overflow detected] 
    V8Exception.ThrowScriptEngineException(V8Exception*) +169 
    Microsoft.ClearScript.V8.V8ContextProxyImpl.Execute(String gcDocumentName, String gcCode, Boolean evaluate, Boolean discard) +462 
    Microsoft.ClearScript.V8.<>c__DisplayClass1b.<Execute>b__19() +197 
    Microsoft.ClearScript.ScriptEngine.ScriptInvoke(Func`1 func) +70 
    Microsoft.ClearScript.V8.V8ScriptEngine.BaseScriptInvoke(Func`1 func) +49 
    Microsoft.ClearScript.V8.<>c__DisplayClass25`1.<ScriptInvoke>b__24() +45 
    Microsoft.ClearScript.V8.?A0x792c8756.LockCallback(Void* pvArg) +9 
    Microsoft.ClearScript.V8.V8ContextProxyImpl.InvokeWithLock(Action gcAction) +176 
    Microsoft.ClearScript.V8.V8ScriptEngine.ScriptInvoke(Func`1 func) +118 
    Microsoft.ClearScript.V8.V8ScriptEngine.Execute(String documentName, String code, Boolean evaluate, Boolean discard) +118 
    JavaScriptEngineSwitcher.V8.V8JsEngine.InnerEvaluate(String expression) +89 

から

Unknown error (RangeError); potential stack overflow detected 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: Microsoft.ClearScript.ScriptEngineException: Unknown error (RangeError); potential stack overflow detected 

そして、これは一部であり、それはループまたは類似のものになる。さらに、ページをリフレッシュするとこのエラーは消えてしまいます。集中的にリフレッシュを続けると、再び非常にイライラします。

+1

もし、スタックオーバーフローの可能性がある場合は、適切な場所に来て – kinakuta

+0

となりました。 –

答えて

1

これは既知の問題であり、周りのhttps://github.com/reactjs/React.NET/issues/190

仕事はすなわち、レンダリングを行うにV8を使用しないことです参照してください。

app.UseReact(config => 
     { 
      config 
       // ..other configuration settings 
       .SetAllowMsieEngine(true); 
     }); 
+0

はい、私はこのgithubの問題を見て、このエラーを検索したところで、これまでのところ。とにかく、あなたが提供したコードをどこに挿入すべきですか?私はそれが 'Startup.cs'ファイルにあるはずですが、私の' app'は 'UseReact()'メソッドを持っていないと思います... –

+0

@MartinShishkovデフォルトでは、App_Start \ ReactConfig.cs(ReactSiteConfigurationにあります。コンフィギュレーション)でも起動は良いところです –

+0

'ReactConfig.cs'の' Configure() 'メソッドで' ReactSiteConfiguration.Configuration.SetAllowMsieEngine(true); 'を実行する必要がありますか? –

3

私は同じエラー(紺碧でウェブアプリを)なっていたのと、いくつかの調査とテストの後、SetAllowMsieEngineをtrueに設定すると、実際に問題が解決されました。

Luke McGregor氏によると、これはV8ScriptEngineの問題であると思われますが、SetAllowMsieEngineを使用するとジョブが実行されますが、このメソッドは最新バージョンのreact.netが廃止され、「JavaScriptEngineSwitcher設定で管理する」ことが推奨されます。

だから私は、これまでに見つかったソリューションは、コードで直接設定することで、JSエンジンスイッチャーを切り替えることである。このよう

JsEngineSwitcher engineSwitcher = JsEngineSwitcher.Instance; 
engineSwitcher.EngineFactories 
    .AddChakraCore() 
    .AddMsie(new MsieSettings() { EngineMode = JsEngineMode.Auto }); 

engineSwitcher.DefaultEngineName = ChakraCoreJsEngine.EngineName; 

私はChakraCoreエンジンではなく、エラーの原因となったデフォルトのV8を使用しています。

これまでの約250件の同時リクエストのパフォーマンステストでは、このエラーが発生した可能性があることを以前の同じ条件で確認しても、このエラーは発生しませんでした。

関連する問題