[Ionic]5.0.0-beta.3版尝鲜

本文分享了Ionic5Beta版与Angular9集成测试的经验,详细介绍了项目配置及遇到的问题。在测试过程中,作者发现使用Angular9.0.0-RC7和Typescript3.6.4时,构建过程出现错误。通过调整tsconfig.json中目标版本从es2015回退至es5,成功解决了构建卡顿和错误。

Ionic5正式版还没发布, 不过ionic5 beta版已经出来了, 而且最新已经开始支持Angular9. 因此小试了一下,以下是ionic测试项目的一些主要配置:

  • ionic info
xiaomo@xiaomo:/data/apps/ionicTest$ ionic info

Ionic:

   Ionic CLI                     : 5.4.13 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 5.0.0-dev.202001032123.aac4bb0
   @angular-devkit/build-angular : 0.900.0-rc.7
   @angular-devkit/schematics    : 9.0.0-rc.7
   @angular/cli                  : 9.0.0-rc.7
   @ionic/angular-toolkit        : 2.1.1

Utility:

   cordova-res : not installed
   native-run  : not installed

System:

   NodeJS : v13.0.1 (/usr/local/bin/node)
   npm    : 6.12.0
   OS     : Linux 4.18

  • package.json
{
  "name": "netdisk",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "https://ionicframework.com/",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "^9.0.0-rc.7",
    "@angular/core": "^9.0.0-rc.7",
    "@angular/forms": "^9.0.0-rc.7",
    "@angular/platform-browser": "^9.0.0-rc.7",
    "@angular/platform-browser-dynamic": "^9.0.0-rc.7",
    "@angular/router": "^9.0.0-rc.7",
    "@ionic-native/core": "^5.19.1",
    "@ionic-native/splash-screen": "^5.19.1",
    "@ionic-native/status-bar": "^5.19.1",
    "@ionic/angular": "^5.0.0-dev.202001032123.aac4bb0",
    "core-js": "^3.6.1",
    "rxjs": "~6.5.4",
    "three": "^0.112.1",
    "tslib": "^1.10.0",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/architect": "^0.900.0-rc.7",
    "@angular-devkit/build-angular": "^0.900.0-rc.7",
    "@angular-devkit/core": "9.0.0-rc.7",
    "@angular-devkit/schematics": "9.0.0-rc.7",
    "@angular/cli": "^9.0.0-rc.7",
    "@angular/compiler": "^9.0.0-rc.7",
    "@angular/compiler-cli": "^9.0.0-rc.7",
    "@angular/language-service": "^9.0.0-rc.7",
    "@ionic/angular-toolkit": "^2.1.1",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.8",
    "@types/node": "~13.1.4",
    "codelyzer": "^5.2.1",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.4.1",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.1",
    "karma-jasmine": "~3.0.0",
    "karma-jasmine-html-reporter": "^1.5.1",
    "protractor": "~5.4.2",
    "ts-node": "~8.5.4",
    "tslint": "~5.20.1",
    "typescript": "^3.6.4"
  },
  "description": "An Ionic project"
}

其中Angular更新到9.0.0-RC7, Typescript已经更新到了3.6.4 . 测试过程中发现一点问题, 进行ionic build的时候, 卡住并报错了:

An unhandled exception occurred: Call retries were exceeded
See "/tmp/ng-PVIu7t/angular-errors.log" for further details.
[ERROR] An error occurred while running subprocess ng.

临时解决方法: 修改tsconfig.ts, 将"target": "es2015", 降回到了"target": "es5", .

在使用 Ionic 构建 Cordova Android 应用时,如果遇到 `ionic-app-scripts` 子进程失败并返回退出码 1 的错误,可能是由于多个原因导致的。以下是一些常见的原因及相应的解决方案: ### 1. **Node.js 和 npm 本不兼容** - **问题描述**:`ionic-app-scripts` 对 Node.js 和 npm 的本有一定要求,如果本不兼容,可能会导致构建失败。 - **解决方案**:确保使用的 Node.js 和 npm 本与 Ionic 框架兼容。通常推荐使用 Node.js 14.x 或 16.x 本。可以通过以下命令检查当前本: ```bash node -v npm -v ``` 如果本不兼容,建议使用 [nvm](https://github.com/nvm-sh/nvm) 来管理不同本的 Node.js。 ### 2. **依赖项安装不完整** - **问题描述**:`node_modules` 文件夹中的某些依赖项可能未正确安装,或者某些依赖项本冲突,导致 `ionic-app-scripts` 无法正常运行。 - **解决方案**:删除 `node_modules` 文件夹和 `package-lock.json` 文件,然后重新安装依赖项: ```bash rm -rf node_modules package-lock.json npm install ``` 这将确保所有依赖项重新下载并正确安装[^2]。 ### 3. **缓存问题** - **问题描述**:Ionic 使用缓存来加速构建过程,但如果缓存损坏或过时,可能会导致构建失败。 - **解决方案**:清除 Ionic 的缓存并重新构建项目: ```bash ionic cache clear ionic build --prod ``` ### 4. **权限问题** - **问题描述**:在某些操作系统上(如 macOS 或 Linux),执行构建命令时可能遇到权限不足的问题,导致 `ionic-app-scripts` 无法访问某些文件或目录。 - **解决方案**:确保运行构建命令时具有足够的权限。可以尝试使用 `sudo` 来提升权限: ```bash sudo ionic build --prod ``` 如果仍然遇到权限问题,可以检查 Gradle 或其他工具的安装路径是否具有正确的读写权限[^3]。 ### 5. **Gradle 配置问题** - **问题描述**:Cordova 使用 Gradle 来构建 Android 应用,如果 Gradle 配置不正确或本不兼容,可能会导致构建失败。 - **解决方案**:确保 Gradle 的本与 Android SDK 兼容,并且 Gradle 的安装路径正确。可以通过以下命令更新 Gradle: ```bash cd platforms/android ./gradlew wrapper --gradle-version 7.2 ``` 此外,还可以检查 `build.gradle` 文件中的配置是否正确,尤其是 `compileSdkVersion` 和 `targetSdkVersion` 是否与当前 Android SDK 兼容。 ### 6. **插件冲突** - **问题描述**:某些 Cordova 插件可能与 `ionic-app-scripts` 冲突,导致构建失败。 - **解决方案**:尝试移除所有插件,然后逐个添加以确定是哪个插件导致了问题。可以使用以下命令移除所有插件: ```bash cordova plugin remove <plugin-name> ``` 如果发现某个插件导致问题,可以尝试更新该插件或寻找替代插件。 ### 7. **Ionic App Scripts 本问题** - **问题描述**:`ionic-app-scripts` 的本可能与 Ionic CLI 或其他依赖项不兼容。 - **解决方案**:确保 `ionic-app-scripts` 的本与 Ionic CLI 兼容。可以通过以下命令更新 `ionic-app-scripts`: ```bash npm install @ionic/app-scripts@latest --save-dev ``` ### 8. **日志分析** - **问题描述**:错误信息可能不够详细,无法直接定位问题。 - **解决方案**:启用详细日志记录以获取更多调试信息。可以在构建命令中添加 `--verbose` 参数: ```bash ionic build --prod --verbose ``` 通过分析详细的日志信息,可以更准确地定位问题所在。 ### 总结 `ionic-app-scripts` 子进程失败的原因可能涉及多个方面,包括依赖项安装问题、缓存问题、权限问题、Gradle 配置问题、插件冲突等。通过逐步排查这些可能的原因,通常可以解决该问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值