HarmonyOS鸿蒙Next中@react-native-ohos/react-native-zip-archive三方库无法运行
HarmonyOS鸿蒙Next中@react-native-ohos/react-native-zip-archive三方库无法运行 【问题描述】:@react-native-ohos/react-native-zip-archive三方库按文档安装时无法运行,文档地址:https://gitcode.com/OpenHarmony-RN/usage-docs/blob/master/zh-cn/react-native-zip-archive.md
【问题现象】按文档配置完成后,在rn工程侧运行codegen和npm run dev,然后回到harmony工程侧同步后在设备上运行,出现报错:fatal error: ‘RNOH/generated/turbo_modules/RNZipArchive.h’ file not found
#include “RNOH/generated/turbo_modules/RNZipArchive.h”

【版本信息】:
@react-native-oh/react-native-harmony: 0.72.133
@react-native-ohos/react-native-zip-archive: 6.1.2-rc.1
【复现代码】:参考文档:https://gitcode.com/OpenHarmony-RN/usage-docs/blob/master/zh-cn/react-native-zip-archive.md
更多关于HarmonyOS鸿蒙Next中@react-native-ohos/react-native-zip-archive三方库无法运行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
尊敬的开发者,您好!感谢您的反馈,问题正在加速处理中,还请关注后续版本,感谢您的理解与支持。
更多关于HarmonyOS鸿蒙Next中@react-native-ohos/react-native-zip-archive三方库无法运行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
报错是 turbo-modules 头文件未生成,大概率是 codegen 未执行成功。
先检查:
- package.json 是否配置了 codegenConfig ;
- 执行 npx react-native codegen-harmony 手动生成头文件;
- 鸿蒙工程侧需同步 oh-package.json5 依赖,再重新构建。
也可尝试清理缓存后重新运行 npm run dev 。
这个报错本质是:ZipArchive 这个库是 TurboModule(新架构)库,它在 C++ 侧 #include "RNOH/generated/turbo_modules/RNZipArchive.h",而这个头文件是 RNOH 的 Codegen 生成产物。现在你的工程里 没有跑/没有接入 codegen 产物,所以编译期直接找不到头文件。
你用的版本组合(@rnoh/react-native-openharmony + @react-native-ohos/react-native-zip-archive)是典型需要手动跑一次 codegen-harmony 的场景。
解决步骤(按顺序来)
1)先确保 RNOH SDK 已经在 Harmony 工程里安装到 oh_modules
你截图里已经有: harmony/entry/oh_modules/@rnoh/react-native-openharmony (DevEco “同步/ohpm install” 后应存在)
2)在 RN 工程根目录配置并执行 codegen
在 package.json 增加脚本(路径按你工程结构改;你截图是 harmony/entry/...):
{
"scripts": {
"codegen": "react-native codegen-harmony --cpp-output-path ./harmony/entry/src/main/cpp/generated --rnoh-module-path ./harmony/entry/oh_modules/@rnoh/react-native-openharmony"
}
}
然后执行:
npm run codegen
执行完你应该能在类似路径看到文件(关键是这个):
harmony/entry/oh_modules/@rnoh/react-native-openharmony/generated/turbo_modules/RNZipArchive.h
如果这里还没有生成,说明 codegen 没扫描到该三方库(通常是库没正确安装、或库没带 codegenConfig、或没在 RN 工程里被识别到)。
3)把生成的 C++ 代码编进 rnoh_app(有些模板已做过,但建议核对)
按 codegen 指南,entry/src/main/cpp/CMakeLists.txt 里需要把 ./generated/*.cpp 加入编译目标;并在 PackageProvider.cpp 里注册 RNOHGeneratedPackage(否则即便过了编译,后续也可能运行期找不到 TurboModule 绑定)。
(如果你工程是官方模板,有可能已经加了;但你现在这种“找不到 generated 头文件”的情况,通常这块也没完整走通。)
4)清理并重建
- RN 侧:删掉旧产物后再跑
npm run codegen - Harmony 侧:DevEco 里 Clean/Rebuild 或删除
build后重新构建
你现在的报错为什么会出现
@react-native-ohos/react-native-zip-archive 的 native 代码默认假设:你已经跑过一次 codegen,并且 RNOH 模块下存在 generated/turbo_modules/RNZipArchive.h。没生成就必然 file not found。
Sources:
同问
该库依赖的原生模块未适配HarmonyOS NEXT的API。鸿蒙Next移除AOSP兼容层,RN桥接需基于ArkTS/仓颉重新实现。检查是否为纯血鸿蒙专用版本,若否,则无法在Next系统上运行。
这是由codegen未正确生成Turbo模块头文件导致的。请按以下步骤排查:
- 确保在RN工程根目录执行npx react-native codegen-harmony或文档指定的codegen命令,观察是否有错误输出。
- 确认生成目录**RNOH/generated/turbo_modules/**下是否出现了
RNZipArchive.h。若不存在,可能是库的规格文件(spec)路径或名称未正确配置,检查package.json中codegenConfig字段是否正确指向了该库的src或spec目录。 - 若文件已生成,检查Harmony工程侧oh-package.json5或CMakeLists是否已正确引用该生成的路径,确保头文件搜索路径包含
RNOH/generated。 - 尝试清理RN工程缓存后重新生成:删除
node_modules及RN侧build目录,重新npm install后再次执行codegen。 - 确认使用的
@react-native-oh/react-native-harmony版本与库兼容,必要时参考库文档的版本映射表。

