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

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吗?

4

1 回答 1

2

是的,我可以在使用移动模拟器并将“调试器类型”设置为“仅限托管”时重现您的问题。以下是抛出的异常ChakraHost dateHost = new ChakraHost();

ChakraBridge.winmd 中出现“System.Exception”类型的异常,但未在用户代码中处理

附加信息:无法开始调试。

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 回答