从零学习RN for OpenHarmony踩坑日记(五)
解决从零学习RN for OpenHarmony踩坑日记(四)中的问题后,又出现了其他问题,在此进行记录。
解决从零学习RN for OpenHarmony踩坑日记(四)https://blog.csdn.net/gaojw07/article/details/157297952?spm=1011.2415.3001.5331中的问题后,又出现了其他问题,在此进行记录。
问题1:
问题描述:
编译过程中出现cmakelist的错误,具体说明如下:
project(rnapp)
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_SKIP_BUILD_RPATH TRUE)
set(OH_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules")
set(RNOH_APP_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(RNOH_CPP_DIR "${OH_MODULE_DIR}/@rnoh/react-native-openharmony/src/main/cpp")
set(RNOH_GENERATED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/generated")
set(CMAKE_ASM_FLAGS "-Wno-error=unused-command-line-argument -Qunused-arguments")
set(CMAKE_CXX_FLAGS "-fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -s -fPIE -pie")
add_compile_definitions(WITH_HITRACE_SYSTRACE)
set(WITH_HITRACE_SYSTRACE 1) # for other CMakeLists.txt files to use
add_subdirectory("${RNOH_CPP_DIR}" ./rn)
add_library(rnoh_app SHARED
"./PackageProvider.cpp"
"${RNOH_CPP_DIR}/RNOHAppNapiBridge.cpp"
)
target_link_libraries(rnoh_app PUBLIC rnoh)
问题原因:
cmakelist.txt中的第四行里设置的oh_modules路径不对,set(OH_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules"),oh_modules不在这一层,需要再加一层。

解决方案:
路径多加一层:set(OH_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules")改为set(OH_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../oh_modules")
问题2:
问题描述:
项目运行时报错,错误如下:
Reason:TypeError
Error name:TypeError
Error message:Cannot read property logger of undefined
Stacktrace:
at aboutToAppear entry (entry/src/main/ets/pages/Index.ets:28:41)

问题原因:
rnohCoreContext 通过 @StorageLink 装饰器与 AppStorage 绑定,其初始值为 undefined
aboutToAppear 生命周期早于 build 执行,此时 StorageLink 可能未完成数据同步,导致 this.rnohCoreContext 仍为 undefined
代码中直接使用 this.rnohCoreContext!.logger(非空断言操作符 !),强制访问未初始化的对象属性。
解决方案:
在访问 this.rnohCoreContext 前添加空值校验:
aboutToAppear() {
if (this.rnohCoreContext) { // 增加空校验
this.logger = this.rnohCoreContext.logger.clone("Index");
const stopTracing = this.logger.clone("aboutToAppear").startTracing();
this.shouldShow = true;
stopTracing();
}
}
解决以上问题后,项目运行成功。

由于目前没有添加任何内容,所以是白屏,接下来会逐渐进行丰富。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
更多推荐



所有评论(0)