我正在尝试使用ChakraBridge在我的应用中加载javascript,并按照以下块中给出的步骤进行操作
Using JavaScript Framework in UWP
以及GitHub JsBridge
我在项目中添加了ChakraBridge.winmd作为参考,当调试模式为Script时,它完全正常。当我将其更改为Managed Only时,它会给我异常,并且对于Release模式也是如此。
有人可以提出什么问题吗?
这是一个例子。我正在尝试使用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
?
答案 0 :(得分:2)
是的,我可以在使用Mobile Emulator并设置&#34; Debugger type&#34;时重现您的问题。到&#34;仅管理&#34;。以下是#if DEBUG
// Debug
if (Native.JsStartDebugging() != JavaScriptErrorCode.NoError)
throw new Exception("failed to start debugging.");
#endif
的异常抛出。
类型&#39; System.Exception&#39;的例外情况发生在ChakraBridge.winmd但未在用户代码中处理
其他信息:无法开始调试。
在ChakraBridge中,如果它处于调试模式,它会调用JsStartDebugging在当前上下文中开始调试。
Native.JsStartDebugging
但是,Fatal
方法在使用Mobile Emulator并设置&#34; Debugger type&#34;时返回{{1}}。到&#34;仅管理&#34;。所以我们在申请中遇到了上述异常。
此问题似乎只发生在移动模拟器中。在本地计算机或设备上进行测试时,两者都可以工作。根据代码,此错误应仅在调试模式下发生。如果我们在我们的解决方案中添加 ChakraBridge 项目,该应用程序可以在模拟器中的发布模式下运行。目前,您可以在本地计算机或真实的移动设备上测试您的应用,并在GitHub上跟踪this issue。