Leo*_*deu 29 macos cordova ionic-framework
当我在新更新的 macos 12 (Monterey) 上运行“ionic cordova build ios”时,我收到此错误:
Uncaught Exception:
TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
at macosRelease (/Applications/XXX.app/Contents/Resources/app.asar/node_modules/macos-release/index.js:26:26)
at Object.<anonymous> (/Applications/XXX.app/Contents/Resources/app.asar/main/utils/errors.js:54:17)
at Module._compile (internal/modules/cjs/loader.js:968:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:986:10)
at Module.load (internal/modules/cjs/loader.js:816:32)
at Module._load (internal/modules/cjs/loader.js:728:14)
at Module._load (electron/js2c/asar.js:717:26)
at Function.Module._load (electron/js2c/asar.js:717:26)
at Module.require (internal/modules/cjs/loader.js:853:19)
at require (internal/modules/cjs/helpers.js:74:18)
Run Code Online (Sandbox Code Playgroud)
小智 41
像这样编辑 nameMap
const nameMap = new Map([
[21, ['Monterey', '12']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']]
]);
Run Code Online (Sandbox Code Playgroud)
Ter*_*son 20
这对我有用:
npm uninstall -g cordova
npm install -g cordova@10.0.0
Run Code Online (Sandbox Code Playgroud)
fra*_*t79 16
要修复它,只需安装最新的macos-release,npm install macos-release@3.0.1 --save
并使用 MacOS 12 (Monterey) 进行定义。
Leo*_*deu 11
在挖掘“macos-release”库的源代码后,我发现该数组中不存在“Monterey”版本,这就是问题的原因:
const nameMap = new Map([
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']]
]);
Run Code Online (Sandbox Code Playgroud)
这个“macos-release”库是“cordova”的依赖项:“^9.0.0”,所以对我有用的解决方案是从我的 package.json 文件中删除这个库,删除“node-modules”文件夹并安装再次所有依赖项。
另一个解决方案是升级到 cordova 10.0.0。
小智 11
对于更新到 Ventura 的用户,您还应该添加以下内容:
[22, ['Ventura', '13']],
Run Code Online (Sandbox Code Playgroud)
所以它会像;
const nameMap = new Map([
[22, ['Ventura', '13']],
[21, ['Monterey', '12']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']]
]);
Run Code Online (Sandbox Code Playgroud)
如果您不知道您的版本,请尝试console.log(release);
使用函数const macosRelease = release => {...
小智 6
当我将 macOS 更新到 Ventura (13) 时,我开始面临这个问题。因此,只需在 HashMap 中添加操作系统名称版本,无需更新任何内容。
const nameMap = new Map([
[21, ['Ventura', '13']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']]
]);
Run Code Online (Sandbox Code Playgroud)