react-native 开发坑记录

本贴最后更新于 2421 天前,其中的信息可能已经东海扬尘
  1. 环境搭建,根据官网,其中的 building projects with native code tab 下的步骤依次配置。这里有个问题,ANDROID_HOME 必须配置。

    export ANDROID_HOME=$HOME/Library/Android/sdk
    
  2. 华为手机打开 demo app 之后,自动跳转到 在其他应用的上层显示,蛋疼的东西,找到自己的 app,然后设置允许,重新进入

  3. RN 结构的基本介绍,戳这里

  4. 文件路径找不到的问题,摇一下手机,然后出现 setting 列表,选 dev settings,修改 debug server host & port for device,改成你的电脑的 ip:8081。返回之后再摇一下,reload。也可以退出后重启。

  5. 如果是 # [SyntaxError: Strict mode does not allow function declarations in a lexically nested statement on a newly created app](https://stackoverflow.com/questions/41058495/syntaxerror-strict-mode-does-not-allow-function-declarations-in-a-lexically-nes)

    open node_modules\react-native\Libraries\Core\InitializeCore.js line 112
    
    change function Const handleError = (e, isFatal) =>  to var handleError = function(e, isFatal)
    
    then do npm start -- --reset-cache
    

    这里可能也跟 react native 的版本有关系,版本比较低一点的,目录结构可能不是这样的=>node_modules\react-native\Libraries\Core
    具体的多少版本之后,不清楚。。。

  6. 然后就启动了。但是,用一个 Redmi note 3 测试,依旧报错。如下:

    Installing APK 'app-debug.apk' on 'Redmi Note 3 - 5.0.2' for app:debug
    
    08:38:06 E/234205030: Error while uploading app-debug.apk : Unknown failure ([CDS]close[0])
    

    可以参考这里. 给出了三种解决方案,第二种和第三种都试过了。貌似可以解决问题。
    附:查看设备 id 的方式: adb devices

  7. 然后出现一个新的问题,启动 app 后是白屏的。看日志,显示

    Could not run adb reverse: Command failed: xxx adb reverse tcp:8081 tcp:8081
    然后就不知道为啥了。。感觉跟手机系统版本有关,我用的 android 5.0,华为的 7.0 是没啥问题了的。这里暂时没找到原因,现这样吧。

  8. deviceinfo native module is not installed correctly
    在启动一个新的 app demo 的时候,已有一个 local server 启动着,需要关了,重新在安装对应的 app 之前启动 server。

  9. # [StackNavigator报错back-icon.png:Unexpected character解决方法](http://www.cnblogs.com/douglasvegas/p/6978468.html)
    关闭模拟器关闭 server,执行
    react-native link,再重新 npm start 即可。

  10. navigation/router 相关的,采用了 React Navigation 组件。不管是 drawerLayout/tabView/stackView 还是这几种组合,实现起来还是都比较容易的。

    以上组合方式的使用可以参考这篇文章

  11. 对于 refreshableList 的使用,可以参考 npm 包 react-native-refresh-list-viewgithub 地址,这个实现比较简单,非常轻量,还算好用。

    我目前没有 footer 加载相关的需求,这个小组件扩展性还是不够,所以就 down 了源码放到项目里,把不需要的部分给注释掉了。后面看看可以提个 pr 增强下扩展性什么的。

  12. xxxx as a folder: it did not contain a package, nor an index file

    个人理解,这个问题通常是 xxxx 文件命名的问题,我自己遇到这个问题是因为:export default tabNews,而文件名是 tabnews。。就报错了。

  13. react native module HMRClient is not registered
    这个问题,刷新之后又变成了 404, 不知道咋滴,不过看来是 ip 没设置对。因为前面卸载过,添加 ip 后好了。真的是坑巨多,而且提示的错误,完全看不出原因。

  14. the title prop of a button must be a string - react native
    button name 应该以 title 属性的形式放在 Button 里

    <Button onPress={() => {
      this._setModalVisible(true)
    }}
    title="Show Modal">
    <Button>
    
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 443 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 623 关注
  • CodeMirror
    1 引用 • 2 回帖 • 119 关注
  • OnlyOffice
    4 引用 • 23 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 45 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 295 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 906 回帖 • 193 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    53 引用 • 85 回帖
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 6 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 521 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖 • 1 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    313 引用 • 1667 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 45 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 452 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 194 关注
  • 笔记

    好记性不如烂笔头。

    304 引用 • 777 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 712 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 597 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 495 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 6 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 26 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    108 引用 • 54 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 439 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 269 关注