升级Mac OS 12.0.1与XCode13.1后执行Ionic Info报错如何解决?
错误引发原因
该错误由旧版本macos-releasenpm包不兼容MacOS 12(Monterey)系统导致:
- 项目依赖的Ionic CLI版本内置的
macos-release包版本较低,内置的系统版本映射表最高仅支持到MacOS 11(Big Sur) - 升级到MacOS 12.0.1后,
macos-release包无法匹配到对应系统版本,返回undefined值 - 后续代码尝试迭代undefined值时直接抛出
TypeError: undefined is not iterable异常
排查修复方案
方案1(推荐,永久生效):升级全局Ionic CLI到最新适配版本
执行以下命令完成升级:npm uninstall -g @ionic/cli npm install -g @ionic/cli@latest升级完成后执行
ionic info验证是否恢复正常。方案2(临时修复,仅适用于无法升级全局CLI的场景):手动修改局部依赖的版本映射
打开项目路径下的node_modules/macos-release/index.js文件,在版本映射数组中新增MacOS 12的匹配项:// 找到nameMap数组,新增以下行 ['12', ['Monterey', '12']],该方案仅临时生效,重新安装node_modules后修改会被覆盖。
方案3(应急绕过):执行命令时临时指定系统版本参数
运行Ionic相关命令前添加环境变量绕过系统版本检测,示例:MACOS_RELEASE_OVERRIDE=11 ionic info
内容的提问来源于stack exchange,提问作者DJDJ
相关产品推荐
相关产品推荐

