HarmonyOS鸿蒙Next中RNOH三方库接入使用Codegen生成代码成功后运行项目报Property 'xxx' does not exist on type
HarmonyOS鸿蒙Next中RNOH三方库接入使用Codegen生成代码成功后运行项目报Property ‘xxx’ does not exist on type 操作步骤:
- 环境
"@rnoh/react-native-openharmony": "0.72.86",
"devDependencies": {"react-native": "0.72.5"}
- 安装三方库
yarn add @react-native-oh-tpl/react-native-amap-geolocation
"@react-native-oh-tpl/react-native-amap-geolocation": "^1.2.3-0.0.5",
- Codegen生成桥接代码
yarn react-native codegen-harmony --cpp-output-path ./harmony/entry/src/main/cpp/generated --rnoh-module-path ./harmony/entry/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation
- 原生端及ARKTS侧代码引入
4.运行报错
1 ERROR: ArkTS:ERROR File: /Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@react-native-oh-tpl+react-native-amap-geolocation@xudu0fihv6usgzcnmzt0rm3kvda3m+mzkm4wz3ooewc=/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation/src/main/ets/AMapGeolocationModule.ts:47:93
Namespace '"/Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@rnoh+react-native-openharmony@lpa0udgrkuk5cowpdlvzq9beb3zchj8tc0ip7l134wm=/oh_modules/@rnoh/react-native-openharmony/generated/turboModules/ts"' has no exported member 'RNAMapGeolocation'.
2 ERROR: ArkTS:ERROR File: /Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@react-native-oh-tpl+react-native-amap-geolocation@xudu0fihv6usgzcnmzt0rm3kvda3m+mzkm4wz3ooewc=/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation/src/main/ets/AMapGeolocationModule.ts:219:31
Namespace '"/Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@rnoh+react-native-openharmony@lpa0udgrkuk5cowpdlvzq9beb3zchj8tc0ip7l134wm=/oh_modules/@rnoh/react-native-openharmony/generated/turboModules/ts"' has no exported member 'RNAMapGeolocation'.
3 ERROR: ArkTS:ERROR File: /Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@react-native-oh-tpl+react-native-amap-geolocation@xudu0fihv6usgzcnmzt0rm3kvda3m+mzkm4wz3ooewc=/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation/src/main/ets/AMapGeolocationModule.ts:222:26
Property 'RNAMapGeolocation' does not exist on type 'typeof import("/Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@rnoh+react-native-openharmony@lpa0udgrkuk5cowpdlvzq9beb3zchj8tc0ip7l134wm=/oh_modules/@rnoh/react-native-openharmony/generated/turboModules/ts")'.
4 ERROR: ArkTS:ERROR File: /Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@react-native-oh-tpl+react-native-amap-geolocation@xudu0fihv6usgzcnmzt0rm3kvda3m+mzkm4wz3ooewc=/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation/src/main/ets/AMapGeolocationModule.ts:224:33
Property 'RNAMapGeolocation' does not exist on type 'typeof import("/Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@rnoh+react-native-openharmony@lpa0udgrkuk5cowpdlvzq9beb3zchj8tc0ip7l134wm=/oh_modules/@rnoh/react-native-openharmony/generated/turboModules/ts")'.
5 ERROR: ArkTS:ERROR File: /Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@react-native-oh-tpl+react-native-amap-geolocation@xudu0fihv6usgzcnmzt0rm3kvda3m+mzkm4wz3ooewc=/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation/src/main/ets/AMapGeolocationPackage.ts:32:21
Property 'RNAMapGeolocation' does not exist on type 'typeof import("/Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@rnoh+react-native-openharmony@lpa0udgrkuk5cowpdlvzq9beb3zchj8tc0ip7l134wm=/oh_modules/@rnoh/react-native-openharmony/generated/turboModules/ts")'.
6 ERROR: ArkTS:ERROR File: /Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@react-native-oh-tpl+react-native-amap-geolocation@xudu0fihv6usgzcnmzt0rm3kvda3m+mzkm4wz3ooewc=/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation/src/main/ets/AMapGeolocationPackage.ts:39:24
Property 'RNAMapGeolocation' does not exist on type 'typeof import("/Users/lg/ecospace/workflow/harmony/oh_modules/.ohpm/@rnoh+react-native-openharmony@lpa0udgrkuk5cowpdlvzq9beb3zchj8tc0ip7l134wm=/oh_modules/@rnoh/react-native-openharmony/generated/turboModules/ts")'.
COMPILE RESULT:FAIL {ERROR:7 WARN:136}
> hvigor ERROR: BUILD FAILED in 2 s 982 ms
更多关于HarmonyOS鸿蒙Next中RNOH三方库接入使用Codegen生成代码成功后运行项目报Property 'xxx' does not exist on type的实战教程也可以访问 https://www.itying.com/category-93-b0.html
查一下codegen-harmony 命令中 --cpp-output-path 和 --rnoh-module-path 路径是否与工程实际路径匹配。生成的 RNAMapGeolocation 类型文件应出现在以下目录:
./harmony/entry/src/main/cpp/generated
./harmony/entry/oh_modules/@react-native-oh-tpl/react-native-amap-geolocation
删除现有生成的代码目录,重新执行 yarn react-native codegen-harmony 命令
更多关于HarmonyOS鸿蒙Next中RNOH三方库接入使用Codegen生成代码成功后运行项目报Property 'xxx' does not exist on type的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
该错误是由于RNOH三方库生成的TypeScript类型定义文件未正确包含’xxx’属性导致。在HarmonyOS Next中,RNOH的Codegen工具生成代码时可能未完整同步原生模块的类型声明。
检查RNOH配置文件中nativeModules数组的声明是否正确,确认’xxx’属性在TurboModule接口中明确定义。重新执行Codegen命令生成类型文件,确保tsconfig.json包含正确的类型引用路径。
若问题持续,检查RNOH版本与HarmonyOS Next的兼容性,可能需要更新RNOH或调整类型声明文件。
这是典型的Codegen生成代码与RNOH版本不匹配导致的类型声明缺失问题。错误信息显示RNAMapGeolocation
在@rnoh/react-native-openharmony/generated/turboModules/ts
命名空间中不存在。
检查你的Codegen命令输出路径是否正确指向了RNOH模块的generated目录。确保生成路径与RNOH版本0.72.86的目录结构一致。建议重新运行Codegen命令,确认生成的TypeScript声明文件包含RNAMapGeolocation
接口定义。
如果问题依旧,检查三方库的NativeModuleSpec名称是否与生成的类型名称匹配。有时需要手动调整生成的类型声明文件以适配RNOH的模块加载机制。