HarmonyOS鸿蒙Next中编译flutter engine报错:Cannot read properties of undefined (reading 'startsWith')

HarmonyOS鸿蒙Next中编译flutter engine报错:Cannot read properties of undefined (reading ‘startsWith’) 编译项目https://gitee.com/openharmony-sig/flutter_engine ,错误信息如下

TypeError: Cannot read properties of undefined (reading ‘startsWith’)

at /media/mohao/DATADRIVE1/workspace/engine/src/flutter/shell/platform/ohos/flutter_embedding/hvigor/hvigor-wrapper.js:1:146876
at /media/mohao/DATADRIVE1/workspace/engine/src/flutter/shell/platform/ohos/flutter_embedding/hvigor/hvigor-wrapper.js:1:147142
at R.initProjectWorkSpace (/media/mohao/DATADRIVE1/workspace/engine/src/flutter/shell/platform/ohos/flutter_embedding/hvigor/hvigor-wrapper.js:1:147432)
at /media/mohao/DATADRIVE1/workspace/engine/src/flutter/shell/platform/ohos/flutter_embedding/hvigor/hvigor-wrapper.js:1:150637
at Object.<anonymous> (/media/mohao/DATADRIVE1/workspace/engine/src/flutter/shell/platform/ohos/flutter_embedding/hvigor/hvigor-wrapper.js:1:150657)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
at Module.load (node:internal/modules/cjs/loader:1076:32)
at Function.Module._load (node:internal/modules/cjs/loader:911:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)

更多关于HarmonyOS鸿蒙Next中编译flutter engine报错:Cannot read properties of undefined (reading 'startsWith')的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

排查下代码里面调用startsWith方法的对象为啥undefined

更多关于HarmonyOS鸿蒙Next中编译flutter engine报错:Cannot read properties of undefined (reading 'startsWith')的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


该错误源于Flutter Engine编译脚本中未定义的变量访问。问题通常出现在构建环境配置或脚本路径处理环节。检查Flutter Engine源码的构建配置文件,确保所有环境变量正确定义。同时验证Node.js版本与构建脚本的兼容性。可尝试清理构建缓存后重新执行编译命令。

这个错误表明在 hvigor-wrapper.js 脚本中,尝试对一个 undefined(未定义)的值调用 .startsWith() 方法。

核心原因: 脚本期望某个变量是一个字符串(从而拥有 startsWith 方法),但该变量的实际值是 undefined。这通常发生在:

  1. 访问了一个未定义的对象属性。
  2. 一个本应返回字符串的函数返回了 undefined 或未返回任何值。

问题定位与解决步骤:

  1. 检查 Node.js 环境与依赖:

    • 确保你的 Node.js 版本符合项目要求(通常建议使用 LTS 版本,如 18.x 或 20.x)。
    • flutter_engine 项目根目录下,尝试运行 npm installyarn install(如果项目包含 package.json)来确保所有 Node.js 依赖已正确安装。
  2. 检查 HVigor 配置:

    • 错误发生在 hvigor-wrapper.js 中,这是 HarmonyOS 的构建工具 HVigor 的包装脚本。
    • 检查 flutter/shell/platform/ohos/flutter_embedding/ 目录下的 hvigor 配置文件(如 hvigorfile.tshvigorfile.jspackage.json 中的相关配置)。
    • 重点检查配置中涉及路径模块名环境变量的字段。一个常见的错误来源是路径配置不正确,导致脚本试图从一个不存在的路径读取信息,进而得到 undefined
  3. 分析堆栈跟踪:

    • 错误堆栈指向 hvigor-wrapper.js 的第 1 行附近(具体位置 1:146876)。由于这是压缩后的代码,直接阅读困难。
    • 你可以尝试在项目中寻找未经压缩的源脚本(可能以 .ts 结尾),或者查看 HVigor 或 Flutter for HarmonyOS 项目的文档/issue,看是否有已知的类似问题。
  4. 查看项目文档与 Issue:

    • 访问你提供的 Gitee 仓库 (flutter_engine),仔细阅读 README.mdBUILDING.md 等编译指南,确认所有前置条件、环境变量和配置步骤都已严格完成。
    • 在该仓库的 “Issues” 页面搜索 Cannot read properties of undefined (reading 'startsWith') 或类似错误信息,很可能已有其他开发者遇到并解决了相同问题。

临时排查建议: 如果以上步骤无法快速定位,可以尝试:

  • 在一个全新的、干净的目录中重新克隆 flutter_engine 仓库,并严格按照官方文档步骤重新配置和初始化,避免原有环境残留文件的影响。
  • 确保你的 HarmonyOS SDK 和 NDK 版本与 flutter_engine 项目要求匹配。

这个错误本质上是 JavaScript 执行时的运行时错误,根本原因在于构建脚本的输入或配置不符合预期,导致某个关键变量未正确初始化。

回到顶部