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

升级Ionic和Cordova CLI后Capacitor同步iOS报错求助

Ionic iOS编译失败问题排查与修复

原可运行技术栈

Cordova CLI 10.0.0
Ionic CLI 6.18.0
Node.js 16.13.0
Node.js versions
12.22.7 / 14.18.1 / 16.13.0
npm 8.1.0
Yarn 1.22.17
Python 2 / 3
macOS 11.6.1
Carthage 0.38.0
CocoaPods 1.11.2
Xcode 13.1

升级后技术栈(编译失败)

Cordova CLI 12.0.0
Ionic CLI 6.20.9
Node.js 18.15.0
Node.js versions 14.21.3 / 16.19.1 / 18.15.0
npm 8.19.4
Yarn 1.22.19
Python 3
macOS 12.6
Carthage 0.38.0
CocoaPods 1.12.0
Xcode 14.2

package.json依赖列表

"dependencies": {
    "@angular/animations": "^12.0.0",
    "@angular/common": "~11.2.0",
    "@angular/core": "~11.2.0",
    "@angular/fire": "^6.1.5",
    "@angular/forms": "~11.2.0",
    "@angular/platform-browser": "~11.2.0",
    "@angular/platform-browser-dynamic": "~11.2.0",
    "@angular/router": "~11.2.0",
    "@capacitor-community/apple-sign-in": "^0.1.1",
    "@capacitor-community/facebook-login": "^3.0.0",
    "@capacitor/android": "^3.0.1",
    "@capacitor/app": "^1.0.1",
    "@capacitor/camera": "^1.0.1",
    "@capacitor/core": "^3.0.1",
    "@capacitor/filesystem": "^1.0.1",
    "@capacitor/geolocation": "^1.0.1",
    "@capacitor/haptics": "^1.0.1",
    "@capacitor/ios": "^3.0.1",
    "@capacitor/keyboard": "^1.0.1",
    "@capacitor/share": "^1.0.1",
    "@capacitor/splash-screen": "^1.0.1",
    "@capacitor/status-bar": "^1.0.1",
    "@codetrix-studio/capacitor-google-auth": "^3.0.1",
    "@cometchat-pro/chat": "^2.2.1",
    "@ctrl/ngx-emoji-mart": "^5.1.1",
    "@ionic-native/calendar": "^5.33.0",
    "@ionic-native/core": "^5.32.0",
    "@ionic-native/launch-navigator": "^5.32.1",
    "@ionic-native/native-storage": "^5.32.0",
    "@ionic/angular": "^5.5.2",
    "@ionic/pwa-elements": "^3.0.2",
    "@types/googlemaps": "^3.43.3",
    "@videogular/ngx-videogular": "^3.0.1",
    "br-mask": "0.0.10",
    "cordova-plugin-actionsheet": "^2.3.3",
    "cordova-plugin-calendar": "^5.1.5",
    "cordova-plugin-dialogs": "^2.0.2",
    "cordova-plugin-file": "^6.0.2",
    "cordova-plugin-nativestorage": "^2.3.2",
    "es6-promise-plugin": "^4.2.2",
    "firebase": "^7.0 || ^8.0",
    "ion2-calendar": "^3.5.0",
    "ionic4-mask-directive": "^1.0.2",
    "jetifier": "^1.6.6",
    "jwt-decode": "^3.1.2",
    "moment": "^2.29.1",
    "ngx-long-press2": "^1.0.0",
    "rxjs": "~6.6.0",
    "tslib": "^2.0.0",
    "uk.co.workingedge.phonegap.plugin.launchnavigator": "^5.0.5",
    "videogular2": "^7.0.2",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/architect": "~0.1200.0-rc.0",
    "@angular-devkit/build-angular": "~0.1102.4",
    "@angular/cli": "^16.0.3",
    "@angular/compiler": "~11.2.0",
    "@angular/compiler-cli": "~11.2.0",
    "@angular/language-service": "~11.2.0",
    "@capacitor/cli": "^5.0.4",
    "@ionic/angular-toolkit": "^9.0.0",
    "@types/core-js": "^2.5.4",
    "@types/jasmine": "~3.6.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "codelyzer": "^0.0.28",
    "firebase-tools": "^12.2.1",
    "fuzzy": "^0.1.3",
    "inquirer": "^6.2.2",
    "inquirer-autocomplete-prompt": "^1.0.1",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "jsonc-parser": "^3.0.0",
    "karma": "^6.4.2",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "open": "^7.0.3",
    "protractor": "^3.3.0",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~4.0.2"
  }

执行ionic capacitor sync ios --verbose后的错误信息

Error: ./src/global.scss (./node_modules/css-loader/dist/cjs.js??ref--14-1!./node_modules/postcss-loader/dist/cjs.js??ref--14-2!./node_modules/resolve-url-loader??ref--14-3!./node_modules/sass-loader/dist/cjs.js??ref--14-4!./src/global.scss)
Module build failed (from ./node_modules/postcss-loader/dist/cjs.js):
Error: Unknown node type in node creation
    at /Users/al/Documents/mobile/node_modules/@ionic/angular/css/float-elements.css:20:1
    at Rule.normalize (/Users/al/Documents/mobile/node_modules/postcss/lib/container.js:334:13)
    at Rule.append (/Users/al/Documents/mobile/node_modules/postcss/lib/container.js:166:24)
    at Supports.virtual (/Users/al/Documents/mobile/node_modules/autoprefixer/lib/supports.js:71:10)
    at Supports.prefixed (/Users/al/Documents/mobile/node_modules/autoprefixer/lib/supports.js:79:21)
    at /Users/al/Documents/mobile/node_modules/autoprefixer/lib/supports.js:239:29
    at Array.map (<anonymous>)
    at Supports.add (/Users/al/Documents/mobile/node_modules/autoprefixer/lib/supports.js:237:18)
    at Supports.process (/Users/ali.akram/Documents/mobile/node_modules/autoprefixer/lib/supports.js:262:16)
    at /Users/al/Documents/mobile/node_modules/autoprefixer/lib/processor.js:67:27
    at /Users/al/Documents/mobile/node_modules/@angular-devkit/build-angular/node_modules/postcss/lib/container.js:138:18
    at /Users/al/Documents/mobile/node_modules/@angular-devkit/build-angular/node_modules/postcss/lib/container.js:74:18
    at Root.each (/Users/al/Documents/mobile/node_modules/@angular-devkit/build-angular/node_modules/postcss/lib/container.js:60:16)
    at Root.walk (/Users/al/Documents/mobile/node_modules/@angular-devkit/build-angular/node_modules/postcss/lib/container.js:71:17)
    at Root.walkAtRules (/Users/al/Documents/mobile/node_modules/@angular-devkit/build-angular/node_modules/postcss/lib/container.js:136:19)
    at Processor.add (/Users/al/Documents/mobile/node_modules/autoprefixer/lib/processor.js:53:9)
    at OnceExit (/Users/al/Documents/mobile/node_modules/autoprefixer/lib/autoprefixer.js:129:32)

问题根源与修复方案

1. 核心问题分析

  • Angular版本混乱:@angular/animations为12.0.0,其余核心Angular包为~11.2.0,同时`@angular/cli`升级到16.0.3,跨版本冲突导致构建工具与框架核心不兼容。
  • Capacitor版本断层:@capacitor/core及插件为3.0.1,但`@capacitor/cli`为5.0.4,CLI与核心包版本必须严格一致,否则会触发同步和编译错误。
  • PostCSS/autoprefixer冲突:旧版本@angular-devkit/build-angular(~0.1102.4)与升级后工具链的PostCSS版本不兼容,导致解析Ionic CSS时节点创建失败。

2. 分步修复步骤

步骤1:统一Angular版本到11.x(匹配Ionic 5)

Ionic 5.5.2仅支持Angular 10-12,优先统一到11.x避免跨版本问题:
修改package.json中相关依赖:

"@angular/animations": "~11.2.0",
"@angular/cli": "~11.2.4",
"@angular-devkit/architect": "~0.1102.4"

步骤2:同步Capacitor CLI与核心包版本

将@capacitor/cli降级到与@capacitor/core一致的3.0.1:

"@capacitor/cli": "^3.0.1"

步骤3:锁定PostCSS/autoprefixer兼容版本

  • 对于npm(8+),在package.json中添加:
    "overrides": {
      "postcss": "^8.4.21",
      "autoprefixer": "^10.4.14"
    }
    
  • 对于Yarn,在package.json中添加:
    "resolutions": {
      "postcss": "^8.4.21",
      "autoprefixer": "^10.4.14"
    }
    

步骤4:降级Ionic Angular Toolkit

@ionic/angular-toolkit9.0.0与Angular 11不兼容,需降级:

"@ionic/angular-toolkit": "^3.1.1"

步骤5:清理并重新安装依赖

rm -rf node_modules package-lock.json yarn.lock
npm install # 或 yarn install

步骤6:重新同步Capacitor项目

ionic capacitor sync ios

3. 额外建议

Angular 11建议使用Node.js 12.x-14.x,暂时回退到14.18.1可进一步降低版本兼容风险。

内容的提问来源于stack exchange,提问作者Ali Akram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:34:53