Ionic 7+Angular:除錯 R3InjectorError(Platform: core)

Ionic 7+Angular:除錯 R3InjectorError(Platform: core)

更新於 發佈於 閱讀時間約 5 分鐘

​最近在研究做 APP 的方法,以 web 前端開發者的身分來說,第一優先會先選擇能用 HTML 和 JS 的框架出發。以下紀錄我使用 Ionic Angular 的使用紀錄:

▍ 錯誤描述

在以下環境下,可能發生 R3InjectorError(Platform: core) 報錯

@ionic/cli: 7.2.0
@angular/cli: 19.0.6

完整錯誤訊息如果是經由 Android Studio CatLog 查看,大概會是這樣:

NullInjectorError: R3InjectorError(Platform: core)[t -> Ir]
NullInjectorError: No provider for Ir!
raw-image

不過在網路上查過後發現

  1. R3InjectorError(Platform: core)[t -> lr]中的lr在每個人的訊息都不一樣,有些人可能是XrOs 等。 ​
  2. 問題不一定在開發環境或生產環境發生。
  3. Ionic 8 + Angular 19 也可能發生相同問題(link)。


▍ 解法

【解法一】Angular 降版至 18:成功

在 Ionic 論壇的討論結果是「降版 Angular 至 18」XD 雖然還有其他解法,但這似乎是討論者們支持最穩定的方法。可能 Angular 19 還太新了,Ionic 7 是 2023 年推出的,沒有完整支持。

在將 package.json 中的 Angular 19 改成 18.2.12 版本後,再安裝相對應的 TS 和 zone 就可以了。

npm install typescript@5.5.4 --legacy-peer-deps
npm install zone.js@0.14.10 --legacy-peer-deps

不論是 Android Studio 測試,或做成 PWA 發佈到 firebase 網頁上查看都沒有問題。

解法來源:https://forum.ionicframework.com/search?q=R3InjectorError(Platform%3A%20core)


【解法二】註解 Angular 優化功能:失敗

開啟 angular.json 檔案,將以下屬性設為 false。但我查看了自己的設定,預設已經是 false,這對我來說沒有用。

"development": {
"optimization": false, // 編譯過程中的優化功能
"buildOptimizer": false // Angular 特定的構建優化器
},

解法來源:


【解法三】註解 Angular 優化功能:失敗

註解common.js中關於 JavaScript 文件的壓縮優化的程式碼。雖然這在 Android Studio APP CatLog 中沒有再報錯,但佈署到 firebase 時還是錯誤 QQ。

// node_modules\@angular-devkit\build-angular\src\tools\webpack\configs\common.js
if (scriptsOptimization) {
extraMinimizers.push(new plugins_1.JavaScriptOptimizerPlugin({
...
advanced: buildOptions.buildOptimizer,
}));
}

解法來源:https://stackoverflow.com/a/78676522


Ann Chou 喜愛電影和威士忌,既是前端工程師,也是藝術愛好者。喜歡書寫學習歷程和技術文件,掌握經驗與隨時提取的感覺很好。


avatar-img
Ann Chou的沙龍
16會員
28內容數
從藝術領域轉職到前端工程師,喜歡書寫學習歷程和技術文件,掌握經驗與隨時提取的感覺很好。
留言
avatar-img
留言分享你的想法!
Ann Chou的沙龍 的其他內容
從 Vue 班畢業已經 1 個多月,最近也轉職成功,終於有機會把這段歷程記錄下來,當作一個里程碑。此次參加 Vue 班,心境上最大的不同,大概是知道自己即將在完課後,踏上求職道路。所以如果能在課堂期間 2 個月內完成求職作品,我就能提早出發。 ▍學習狀況 雖然先前有稍微玩過 Vue,但也早已
我依舊維持著修習 JS 的步伐,但我仍然覺得自己對 JS 的熟悉度不足。在 JS 班開課後,我藉由刷題庫和做 side project 專題,填補了課前的不自信感和知識焦慮。最終我們小組在 2.5 個月內開發了一個訂閱制電商網站的前後台,我也參加了 F2E week1 完賽,獲得銀級徽章
這是我參加為期三個月的六角學院 2023 網頁前端切版直播班中的學習和成長經驗。最初參加直播班時誤以為自己已經具備足夠的前端知識,但後來發現自己的程式碼還有改進的空間。我在參與直播班的過程中,不僅學到了更多切版技術,也在小組協作中體驗到了組織能力和團隊合作的重要性,並從做設計稿與切版中發現個人優勢。
軟工體驗營最後一周,短短一個月的前端程式體驗,真的是非常超值的課程。不論是檢視自己對寫程式的感受,或是透過社群認識自己的新面向、軟實力的培養都是。六角是非常新手友善的程式學校,推薦給每位想學習前端的初心者朋友。
遭受學習挫折的一周,開始發現社群的重要性,最終還是回歸於自己報名體驗營的目的。
軟體工程師體驗營的第三周,對於知識、學習、課程、社群的感想,持續內化中,我不想只有上課,也希望從學習過程獲得更多經驗,所以寫下了這篇記錄。我也意外發現剛學習的 JavaScript,說不定能讓我重拾學習程式互動藝術,這很令人開心,即使我正在考慮轉職,但創作是終生的,希望下次發作品能有些新展現。
從 Vue 班畢業已經 1 個多月,最近也轉職成功,終於有機會把這段歷程記錄下來,當作一個里程碑。此次參加 Vue 班,心境上最大的不同,大概是知道自己即將在完課後,踏上求職道路。所以如果能在課堂期間 2 個月內完成求職作品,我就能提早出發。 ▍學習狀況 雖然先前有稍微玩過 Vue,但也早已
我依舊維持著修習 JS 的步伐,但我仍然覺得自己對 JS 的熟悉度不足。在 JS 班開課後,我藉由刷題庫和做 side project 專題,填補了課前的不自信感和知識焦慮。最終我們小組在 2.5 個月內開發了一個訂閱制電商網站的前後台,我也參加了 F2E week1 完賽,獲得銀級徽章
這是我參加為期三個月的六角學院 2023 網頁前端切版直播班中的學習和成長經驗。最初參加直播班時誤以為自己已經具備足夠的前端知識,但後來發現自己的程式碼還有改進的空間。我在參與直播班的過程中,不僅學到了更多切版技術,也在小組協作中體驗到了組織能力和團隊合作的重要性,並從做設計稿與切版中發現個人優勢。
軟工體驗營最後一周,短短一個月的前端程式體驗,真的是非常超值的課程。不論是檢視自己對寫程式的感受,或是透過社群認識自己的新面向、軟實力的培養都是。六角是非常新手友善的程式學校,推薦給每位想學習前端的初心者朋友。
遭受學習挫折的一周,開始發現社群的重要性,最終還是回歸於自己報名體驗營的目的。
軟體工程師體驗營的第三周,對於知識、學習、課程、社群的感想,持續內化中,我不想只有上課,也希望從學習過程獲得更多經驗,所以寫下了這篇記錄。我也意外發現剛學習的 JavaScript,說不定能讓我重拾學習程式互動藝術,這很令人開心,即使我正在考慮轉職,但創作是終生的,希望下次發作品能有些新展現。