"每每小伙伴出现类似问题,总是想不起来怎么解决的。开个贴记录下吧… JavaScript Mobx + ListView 无法显示 当使用 mobx 的 observable 注解变量做为 ListView 的 DataSource 时,变量需要 slice() @observable categoryList = [] .."

React Native 系列【异常】

本贴最后更新于 705 天前,其中的信息可能已经时移世改

每每小伙伴出现类似问题,总是想不起来怎么解决的。开个贴记录下吧…

JavaScript

Mobx + ListView 无法显示

当使用 mobx 的 observable 注解变量做为 ListView 的 DataSource 时,变量需要 slice()

@observable categoryList = [];

@computed get categoryDs() {
 const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
 return ds.cloneWithRows(this.categoryList.slice());
}

iOS

一般 react-native run-ios ** BUILD FAILED ** 后,建议打开 Xcode 直接查看编译错误,然后针对性进行处理。

一般 log 最后只会显示如下,你需要去查看前面编译错误。如果你直接搜索了以下错误,当你跟着网上的步骤实施时,基本上都不能彻底解决。在不懂原理的背后去乱做一通,往往适得其反,还需从根本上给予解决。

“:CFBundleIdentifier”, Does Not Exist

‘React/RCTBundleURLProvider.h’ file not found

左侧点击跟项目目录 -> 选择右侧 Build Settings -> 选择 All & Combined -> 搜索框输入 Always Search User Paths -> 将 Always Search User Paths 设置为 Yes -> Clean -> Build 5951e4a8885d4c37a63a0a275f893c99-image.png

‘boost/iterator/iterator_adaptor.hpp’ file not found

产生原因:

解决方案:

  1. 删除 .rncache 后重新下载,或手动下载后放入 .rncache 中
  2. 把以上文件解压后放入 node_modules/react-native/third-party 下
  3. Clean & Build

Android

依旧直接打开 Android Studio 针对错误进行处理

Error running app: Instant Run requires ‘Tools | Android | Enable ADB integration’ to be enabled.

保持 Tools - Android - Enable ADB Integration 和 Preferences -> Build,Execution,Deployment -> Instant Run 一致。即勾选了 Instant Run 选项后,需要设置 Enable ADB Integration

真机白屏

这个我也不知道啥原理了,放弃命令行,使用 Android Studio 打包就好了 😰

WebView 无法显示

url 修改为 uri

ref={(web) => { this.injectWebView = web; }}
  source={{ uri: 'https://hacpai.com/recent' }}
/>

打包后 WebView 本地文件无法显示

把文件放到 SymApp/android/app/src/main/assets 目录下,修改 source 为 uri

ref={(web) => { this.messageWebView = web; }}
  source={{ uri: 'file:///android_asset/post-message.html' }}
  onMessage={this.onMessage}
/>

需要区分 andriod 和 iOS

glog-0.3.4/test-driver Couldn’t follow symbolic link.

异常信息

Could not list contents of ‘SymApp/node_modules/react-native/third-party/glog-0.3.4/test-driver’. Couldn’t follow symbolic link.

直接 unlink,也就是可以把这个文件删掉。

symapp-release-key.keystore": Cannot recover key

第一次输入的密码(store password)和最后一次输入的密码(key password)修改为不一样的就 OK 了

  • React

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

    93 引用 • 180 回帖 • 663 关注
  • 异常处理
    3 引用 • 24 回帖
感谢    关注    收藏    赞同    反对    举报    分享
22 回帖    
请输入回帖内容...
  • Ming API      

    你好 rncache 这个在哪里 怎么重新下载 能讲一下吗?

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    https://pan.baidu.com/s/1geLl5tT 下载。解压后放到 /Users/YOUCOUNT/.rncache 下

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Ming API      

    /Users/YOUCOUNT/.rncache 这个位置搜索不到呢 . rncache 这个全局搜索也没有,下载了 showallfiles 这个显示隐藏文件的软件 可是还是看不到 . rncache

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Ming API      

    defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder 使用这个命令找到. rncache 了 😄

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    没有的话,你运行一下 react-native run-ios. Mac 的话在这个位置
    d4e19c27a4e545e38a90f43d9c49fc8f-image.png

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • duanliwu API      

    你好 rncache 这个在哪里 怎么重新下载 能讲一下吗?用你的方法在我的电脑上找不到?应该怎么办?

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • dunliwu API      

    MAC 根本就没有啊? 怎么找?求告知

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    先运行 react-native run-ios 这个命令

    然后再运行 cd ~ && ls -all 你就可以看到了

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • chrisyu API      

    cd ~
    cd .rncache/

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    ?

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • dd API      

    是个隐藏文件,百度一下终端显示隐藏文件的命令

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    null

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • ZhijianZhang            

    v 你是 全栈么。。

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    看楼下,怎么感觉数据串了。

    不是,我只是一个前端

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    app 回复 react dd 回帖测试

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • yusemo API      

    按照你的办法复制解压。问题是 build 后产生报错。
    in File included from ../react-native/third-arty/glog-0.3.4/src/raw_logging.cc:34:
    in File included from ../react-native/third-arty/glog-0.3.4/src/utilities.h:73:

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    Xcode 上面关联一下依赖

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • cc API      

    #include 倒霉 这个居然报错找不到

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    重新编译一下 或者参见

    ‘React/RCTBundleURLProvider.h’ file not found

       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • zonghua      

    今天使用了一下 MobX 人性化太多了。Redux 用起来真恶心。😂

    1 回复
       感谢    赞同    反对    举报    折叠    分享    评论    回复
  • Vanessa            

    项目小的话啥都不用

       感谢    赞同    反对    举报    折叠    分享    评论    回复
请输入回帖内容...