0

ChakraBridge を使用してアプリに JavaScript をロードしようとしています。次のブロックに記載されている手順に従いました。

UWP で JavaScript フレームワークを使用する

および GitHub JsBridge でも

プロジェクトの参照として ChakraBridge.winmd を追加しました。デバッグ モードがスクリプトの場合、完全に正常に動作します。管理のみに変更すると、例外が発生し、リリース モードでも同じです。

誰かが問題を提案できますか?

これが例です。ChakraBridge API を使用して、プロジェクトの DatePicker にデフォルトの日付を割り当てようとしています

if (!string.IsNullOrEmpty(javascriptFunction))
{
    try
    {
        ChakraHost dateHost = new ChakraHost();
        string dateValue = dateHost.RunScript(javascriptFunction);
        var finalDate = DateTime.ParseExact(dateValue, "dd-MM-yyyy", CultureInfo.InvariantCulture);
        datePicker.Date = finalDate.Date;
    }
    catch(Exception ex)
    {
         Debug.WriteLine(ex.Message);
    }
}

ジャバスクリプト関数は

function executeScript(){var now = new Date(new Date().getTime() - (7*24*60*60*1000)); return ('0'+now.getDate()).substr(-2)+'-'+('0'+(now.getMonth()+1)).substr(-2)+'-'+now.getFullYear();} executeScript();

私が得るStackTrace

at ChakraBridge.ChakraHost..ctor()
at MCS.MCSDynamicViewBuilder.<GenerateDynamicControlforMobile>d__10.MoveNext()

また、ラップトップ マシンでデバッグすると正常に動作し、モバイルまたはモバイル エミュレーターでデバッグすると、この例外が発生します。参照先からラップトップ マシンで利用可能な dist フォルダが原因ChakraBridge.winmdですか?

4

1 に答える 1

2

ええ、モバイル エミュレーターを使用し、「デバッガーの種類」を「管理対象のみ」に設定すると、問題を再現できます。以下は、でスローされる例外ChakraHost dateHost = new ChakraHost();です。

タイプ 'System.Exception' の例外が ChakraBridge.winmd で発生しましたが、ユーザー コードで処理されませんでした

追加情報: デバッグを開始できませんでした。

ChakraBridgeでは、デバッグ モードの場合はJsStartDebuggingを呼び出して、現在のコンテキストでデバッグを開始します。

#if DEBUG
    // Debug
    if (Native.JsStartDebugging() != JavaScriptErrorCode.NoError)
        throw new Exception("failed to start debugging.");
#endif

ただし、Mobile Emulator を使用し、「Debugger type」を「Managed Only」に設定すると、Native.JsStartDebuggingメソッドが返されます。Fatalそのため、アプリケーションで例外を超えました。

この問題はモバイル エミュレーターでのみ発生するようです。ローカル マシンまたはデバイスでテストしている間、両方とも機能します。コードによると、このエラーはデバッグ モードでのみ発生するはずです。また、ソリューションにChakraBridgeプロジェクトを追加すると、アプリはエミュレーターのリリース モードで実行できます。現時点では、ローカル マシンまたは実際のモバイル デバイスでアプリをテストし、GitHubでこの問題を追跡できます。

于 2016-08-19T12:54:04.877 に答える