You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS 12(Monterey)环境下执行ionic cordova build ios命令构建失败

解决MacOS 12 Monterey下ionic cordova build ios的TypeError问题

我之前升级到Monterey后运行ionic cordova build ios时,也碰到过一模一样的错误!这个问题的根源是旧版本的macos-release模块不支持MacOS 12的系统版本检测,在尝试迭代系统信息时因为返回值未定义,抛出了TypeError: undefined is not iterable的错误。

下面是几种亲测有效的解决方法:

方法1:更新依赖或工具版本

这是最简单直接的方案:

  • 如果问题来自项目本地依赖,进入项目根目录执行:
    npm update macos-release
    
  • 如果错误来自全局安装的Ionic/Cordova工具(错误路径里的XXX.app就是你使用的打包工具),直接重新安装最新版工具:
    npm install -g @ionic/cli cordova
    

方法2:手动修复macos-release模块(更新无效时用)

如果更新后问题依然存在,你可以手动修改该模块的代码:

  1. 先解压asar打包文件(错误提示里的app.asar):
    npx asar extract /Applications/XXX.app/Contents/Resources/app.asar app-temp
    
  2. 打开app-temp/node_modules/macos-release/index.js,找到第26行的迭代代码,修改为兼容未定义值的写法:
    // 替换原来的迭代逻辑,确保即使返回undefined也不会报错
    const releaseParts = releaseInfo || [];
    const [name, version] = releaseParts.length >= 2 ? releaseParts : ['Unknown', 'Unknown'];
    
  3. 重新打包asar文件:
    npx asar pack app-temp /Applications/XXX.app/Contents/Resources/app.asar
    
  4. 最后删除临时解压的app-temp文件夹。

方法3:升级Electron相关依赖(项目用到Electron时)

从错误栈能看到涉及Electron的模块加载,如果你的项目依赖Electron,也可以尝试升级到支持Monterey的版本:

npm update electron

内容的提问来源于stack exchange,提问作者Leonardo Nomdedeu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:19:09