Ionic 在 macos 12 中构建失败(蒙特雷)

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)

  • [22,['Ventura','13']],添加 ventura 对我有用:) 谢谢 (3认同)
  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (2认同)

Ter*_*son 20

这对我有用:

npm uninstall -g cordova
npm install -g cordova@10.0.0
Run Code Online (Sandbox Code Playgroud)


fra*_*t79 16

要修复它,只需安装最新的macos-releasenpm 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)