react-native 开发坑记录

本贴最后更新于 2615 天前,其中的信息可能已经东海扬尘
  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 回帖 • 400 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖 • 1 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 52 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 47 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    197 引用 • 547 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 1 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖 • 3 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 526 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1792 回帖 • 7 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 32 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 1 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 622 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • gRpc
    11 引用 • 9 回帖 • 61 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 388 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 584 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 624 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Flume

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

    9 引用 • 6 回帖 • 621 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 124 关注