MacOS 13环境构建项目时遇TypeError迭代错误求解决方案
解决MacOS 13环境下
undefined is not iterable报错问题 问题根源
报错出现在macos-release包的index.js第27行,原因是该包的旧版本未收录MacOS 13(Ventura)的系统版本映射,导致nameMap.get(release)返回undefined,而解构赋值const [name, version] = ...无法对undefined执行迭代操作,触发类型错误。
解决方案
1. 强制升级macos-release到兼容版本
由于该包是嵌套依赖(被os-name间接引用),需通过包管理器的覆盖机制强制升级:
- npm用户:在项目根目录的
package.json中添加overrides字段:
执行"overrides": { "macos-release": "^2.5.1" }npm install重新安装依赖,确保使用支持MacOS 13的版本。 - yarn用户:在
package.json中添加resolutions字段:
执行"resolutions": { "macos-release": "^2.5.1" }yarn install更新依赖。
2. 禁用Cordova Telemetry(临时快速方案)
如果报错由Cordova的遥测模块触发,可直接禁用该功能以跳过相关代码执行:
cordova telemetry off
3. 手动修改旧版macos-release代码(紧急临时修复)
若无法立即升级依赖,可临时修改包内代码:
- 找到项目中
node_modules/macos-release/index.js文件 - 在
nameMap中添加MacOS 13的版本映射:const nameMap = new Map([ // 保留原有条目... ['22', ['macOS', '13']], ['22.0.0', ['macOS', '13']] ]);注意:此修改会在重新安装依赖后失效,仅作为紧急临时方案。
内容的提问来源于stack exchange,提问作者ISSHO TECHNOLOGIES
相关产品推荐
相关产品推荐

