当前位置:  开发笔记 > 编程语言 > 正文

如果没有启用远程调试器,React Native代码将无法运行

如何解决《如果没有启用远程调试器,ReactNative代码将无法运行》经验,为你挑选了1个好方法。

这是一个奇怪的问题,但由于我对此非常好奇,我想问一下.当我启用远程调试时,我有一段在iOS模拟器中工作的代码,但没有它就会停止工作.这是代码:

      let filtered = []
      let dueDate
      const dateNow = new Date(Date.now())

      for (let item of this.props.listData) {
        dueDate = new Date(item.dueDate)
        if (!item.paid && (dueDate < dateNow)) {
          filtered.push(item)
        }
      }
      if (filtered.length > 0) {          
        this.setState({
          dataSource: this.state.dataSource.cloneWithRows(filtered)
        })
      }

(item.dueDate是一个类似"12.02.2016"的字符串)

如果我以正确的格式提供日期(如ISO"2016-02-12"),显然代码可以工作(并且可以工作).我感兴趣的是,当我启用远程调试(启动Google Chrome实例)时,为什么即使格式错误也能正常工作?因为当我在控制台.log中记录Chrome中的日期时,它们会正常转换.提前致谢!



1> jevakallio..:

这很可能是由于设备上的JavaScript执行环境与远程调试器之间的细微差别造成的.

在这种情况下,Date构造函数似乎接受Chrome远程调试环境中的特定于语言环境的日期格式,但不接受设备上的日期格式.这可能是由于您的计算机的区域设置已设置为使用该dd.MM.yyyy格式的文化,而模拟器设置为其他内容,例如en-US.ISO格式适用于两者,因为无论语言环境如何都支持它.

当您在设备或模拟器上运行代码时,代码将在设备本身的JavaScriptCore中执行.这是React Native在内部用于运行应用程序脚本的JavaScript引擎

当您打开远程调试时,React Native打包程序将改为执行计算机Chrome的JavaScript引擎V8中的代码,并通过WebSockets在浏览器和设备/模拟器之间发送消息.

您遇到了许多使React Native中的远程调试不可靠的边缘情况之一.您应该始终在没有调试器的情况下测试真实设备上的所有功能.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有