RN 常见问题
React/RCTBridgeModule.h not found
#import <React/RCTBridgeModule.h> 全部替换为
#import "RCTBridgeModule.h"
同样也有可能遇到 #import "RCTBridgeModule.h" 找不到,可以尝试替换为 #import <React/RCTBridgeModule.h>
Ignoring return value of function declared with 'warn_unused_result' attribute
上述错误出现在 RCTWebSockect文件中
SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes); 全部替换为
(void)SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes);
另外一种解决方案(没试过)
int result = SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes);
assert(result == 0);
"react-native-scrollable-tab-view" 组件的ScrollableTabBar 默认选中效果出不来,也就是 initialPage 无效
react-native-scrollable-tab-view 使用的是 0.6.7 版本,到 ScrollableTabBar.js 中
this.props.scrollValue._value 全部替换为
this.props.scrollValue.__getValue()
或者到官网中 ()[https://github.com/skv-headless/react-native-scrollable-tab-view] 查看最新版本, 使用最新版本,
cd 工程目录
npm install react-native-scrollable-tab-view@0.7.4 --save
或者
yarn add react-native-scrollable-tab-view@0.7.4
FlatList 中 itemSeparate 部分分割线不显示
单元格item 使用的 TouchableOpacity 作为容器,当选中单元格,再上下滚动 list, 会发现itemSeparate 不显示
解决办法: TouchableOpacity 组件替换为 TouchableHighlight
npm install 报错 Unexpected end of JSON input while parsing near '...":"^1.21.4","should":'
npm cache clean --force
xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
ERROR watchman --no-pretty get-sockname returned with exit code=1, signal=null, stderr= 2018-03-13T10:13:24,997: [0x7fffa5a2d3c0] the permissions on /usr/local/var/run/watchman/ex-shili001-state allow others to write to it. Verify that you own the contents and then fix its permissions by running chmod 0700 /usr/local/var/run/watchman/ex-shili001-state
chmod 0700 /usr/local/var/run/watchman/ex-shili001-state
iOS react-native-splash-screen 卡在启动页
react-navigation 设置的 initialRouteName 不是启动页,调用不了 hide方法了
友情提醒:react-native-splash-screen 流程调通后,先把 native 中的 show 注释掉,以免快速调试的过程中设置的 initialRouteName 不是启动页,造成不必要的bug😨,切身体验
react-native-linear-gradient 组件设置 borderRadius有效果,设置 borderTopRightRadius 无效
let linearColors = ['#0E7BEE', '#00C0FF', '#00E1FF']
<LinearGradient
style={[styles.linearGradient,{width: width}]}
start={{x: 0.0, y: 1.0}}
end={{x: 1.0, y: 1.0}}
locations={[0.13, 0.43, 1]}
colors={linearColors}
></LinearGradient>
styles.linearGradient 里添加 overflow: 'hidden', 即可达到效果
linearGradient: {
height: 15,
marginRight: 10,
marginTop: 3,
borderTopRightRadius: 8,
borderBottomRightRadius: 8,
overflow: 'hidden',
},
react native version mismatch
出现这种问题又可能是启动了两个项目,版本冲突,可以先关闭 npm(终极大招,重启电脑),还不行的话,可以尝试下面
第一步:
npm prune && npm install
# OR
yarn
第二步:
npm start --reset-cache
# or
yarn start --reset-cache
Android遇到过上面都不行的情形,按照下面的解决了(iOS的目前还没有遇到过这种特殊情况)
打开 android/app/build.gradle 将
compile "com.facebook.react:react-native:+"
尾部的"+"号 替换成 "0.54.4", 强制指定编译版本, OK!
以上方法可以解决目前的问题, 希望知道具体原因的大佬给出详细的解释 !
附加:如果还是不行, 就用如下格式:
compile ("com.facebook.react:react-native:xx.xx.xx") { force = true }
/Users/lucascorreia/Documents/workspace/college/PayIt/node_modules/react-native-picker/android/src/main/java/com/beefe/picker/PickerViewModule.java:362: error: cannot find symbol if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
进入 android -> build.gradle
文件最末尾添加
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 27
defaultConfig {
targetSdkVersion 27
}
}
}
}
}
canOverrideExistingModule=true
android\app\src\main\java\com\project\MainApplication.java文件中方法 getPackages 里第三方库重复导入
一般这样的情况上面 import 也会有重复的,去掉所有重复的
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
VectorIconsPackage()
, new VectorIconsPackage()
);
}
上面改完后,android\app\build.gradle
dependencies {
// 去掉重复的
}
error react-native@0.57.7: The engine "node" is incompatible with this module. Expected version ">=8.3".
error Found incompatible module
要升级node.js 版本
方法一:
npm install -g n
sudo n stable
设置默认指定模拟器
1.获取模拟器名称
xcrun simctl list devices
2.修改package.json 文件 的 scripts 配置,此处的 run-ios 也可以叫别的
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest",
"run-ios": "react-native run-ios --simulator 'iPhone 7 Plus'"
},
3. 运行,以后只需执行下面命令即可
npm run-ios