HarmonyOS 鸿蒙Next 执行worker时,worker能正常执行但总是报错,有没有解决办法
HarmonyOS 鸿蒙Next 执行worker时,worker能正常执行但总是报错,有没有解决办法
11-20 21:12:11.279 16781-17006 C03f00/ArkCompiler E at func_main_0 (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsEnumStyle.js:3007:1)
11-20 21:12:11.279 16781-17006 C03f00/ArkCompiler E [ecmascript] invalid size of the string cache table or the table has been registered.
11-20 21:12:11.280 16781-17006 C03f00/ArkCompiler E [ecmascript] Currently, maximum size of the table is 150
11-20 21:12:11.287 16781-17006 C01305/Base E [extractor.cpp(IsHapCompress:266)]GetEntry failed fileName: ets/workers/ImageDownloadWorker.abc
11-20 21:12:11.287 16781-17006 C01305/Base E [zip_file.cpp(CreateFileMapper:1034)]GetEntry failed hapPath ets/workers/ImageDownloadWorker.abc
11-20 21:12:11.287 16781-17006 C01321/JsRuntime E [js_worker.cpp:431]Get secure mem failed, file <private>
11-20 21:12:11.287 16781-17006 C01321/JsRuntime E [js_worker.cpp:264]Get buffer by filepath failed
首先看一下第一行报错,ReferenceError: NativeCustomSpan is not defined,后面一串表示
/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsEnumStyle.js:3007:1 处引用了未定义的NativeCustomSpan。
这个错误需要检查该文件中这一行附近的代码逻辑,确认一下是不是正确引入了包含NativeCustomSpan定义的模块或文件。如果没有正确引入,自己修改一下
在排查完对应的逻辑之后,再查看一下,这部分代码相关的所有依赖模块都已正确安装和加载,项目的构建文件是否齐全,核对涉及到的库的依赖配置是不是准确,上面的内容没对好都会报错。
第二个,[ecmascript] invalid size of the string cache table or the table has been registered.巴拉巴拉。
首先检查一下缓存配置的参数,看一下表符串缓存表的大小是不是有问题,要么是无效的大小设置,要么是已经注册过但不符合当前要求。找找代码里关于字符串缓存表初始化或配置的部分,检查一下,设置的大小参数是否符合 HarmonyOS 的规范以及是否与当前应用场景匹配。更具体的可以查看一下ECMAScript 运行环境相关的缓存配置那一块的代码
如果查看完上面的内容还是没有缓解,那就可以考虑一下是不是内存是不是太大了。
那么第三个,[extractor.cpp (IsHapCompress:266)] GetEntry failed fileName: ets/workers/ImageDownloadWorker.abc
先检查一下文件的路径,是不是拼写错误或者,漏写。报错显示在获取ets/workers/ImageDownloadWorker.abc文件的入口时失败了,涉及到extractor.cpp和zip_file.cpp`相关代码逻辑。首先要确认该文件是否确实存在于指定的路径下,如果文件不存在,需要检查文件生成或部署环节是否出现问题。可能是在构建过程中该 worker 文件没有正确生成或没有被正确放置到指定位置。只需要正确生成一下或者,将代码放到指定位置就可以。
第二个就是查看一下自己的压缩和解压缩是不是正常,根据错误涉及到的IsHapCompress和CreateFileMapper`等函数来看,如果解压缩什么的都正确,那可以检查文件映射相关的逻辑,保证在获取文件入口时能够正确映射到实际的文件内容。
第四个错误,针对 “[js_worker.cpp:431] Get secure mem failed, file <private>
这个错误出现的时候,首先要检查一下代码内存权限的分配,该错误提示在js_worker.cpp
的 431 行获取安全内存失败。看下代码里有关内存分配和获取安全内存的逻辑。确保有足够的内存和权限。
第五个,针对 [js_worker.cpp:264] Get buffer by filepath failed” 获取文件路径缓冲区失败错误
首先是验证一下文件的路径是不是还有效,拼写是不是对了、路径分隔符是不是使用正确,这个报错还可能表明在js_worker.cpp的 264 行通过文件路径获取缓冲区失败。或者检查一下缓冲区是否被正确设置。
可以多看看对应一下能不能解决
针对HarmonyOS 鸿蒙Next执行worker时遇到的报错问题,可以尝试以下专业解决方案:
-
检查模块依赖:
- 确保所有必要的模块都已正确安装,并且版本兼容。特别是
@ohos/hvigor
等核心模块,必须确保它们在项目中的引用是正确且完整的。
- 确保所有必要的模块都已正确安装,并且版本兼容。特别是
-
审查代码错误:
- 仔细检查worker中的代码,查找可能导致报错的语法错误、逻辑错误或类型不匹配等问题。
-
配置检查:
- 确认项目的配置文件(如
build-profile.json5
)是否正确设置了运行时环境为HarmonyOS。
- 确认项目的配置文件(如
-
环境兼容性:
- 确保DevEco Studio和HarmonyOS SDK均为最新版本,以支持最新的功能和修复已知的错误。
-
清理和重建:
- 尝试清理项目并重新构建,以消除可能存在的构建缓存问题。
-
日志分析:
- 仔细分析报错日志,查找具体的错误信息和错误位置,以便进行针对性的修复。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。