Возникло исключение: System.Exception в ChakraBridge.winmd не удалось начать отладку

Я пытаюсь загрузить javascript в свое приложение, используя ChakraBridge, и я выполнил шаги, указанные в следующем блоке

Использование JavaScript Framework в UWP

а также на GitHub JsBridge

Я добавил ChakraBridge.winmd в качестве ссылки в моем проекте, и он отлично работает, когда режим отладки - Script. Когда я изменяю его на Managed Only, это дает мне исключение и то же самое для режима Release.

Может кто-нибудь подсказать в чем проблема?

Вот пример. Я пытаюсь назначить дату по умолчанию в DatePicker в моем проекте, используя ChakraBridge API

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);
    }
}

Функция JavaScript является

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?

1 ответ

Решение

Да, я могу воспроизвести вашу проблему, используя мобильный эмулятор и установив "Тип отладчика" на "Только управляемый". Ниже приведено исключение 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

Тем не мение, Native.JsStartDebugging метод возвращает Fatal при использовании мобильного эмулятора и установке "Тип отладчика" на "Только управляемые". Таким образом, мы получили выше исключения в нашем приложении.

Эта проблема, кажется, происходит только в мобильном эмуляторе. Во время тестирования на локальной машине или устройстве оба могут работать. Согласно коду, эта ошибка должна возникать только в режиме отладки. И если мы добавим проект ChakraBridge в наше решение, приложение может работать в режиме выпуска в эмуляторе. На данный момент вы можете протестировать свое приложение на локальном компьютере или реальном мобильном устройстве и отслеживать эту проблему на GitHub.

Другие вопросы по тегам