Je viens de mettre à jour mon application Ionic 2 vers Ionic 3, tout le framework, Ionic native, et le CLI.
J'ai maintenant la configuration suivante..
"dependencies": {
"@angular/animations": "4.1.0",
"@angular/common": "4.1.0",
"@angular/compiler": "4.1.0",
"@angular/compiler-cli": "4.1.0",
"@angular/core": "^4.1.0",
"@angular/forms": "4.1.0",
"@angular/http": "^4.1.0",
"@angular/platform-browser": "4.1.0",
"@angular/platform-browser-dynamic": "4.1.0",
"@ionic-native/app-version": "^3.8.0",
"@ionic-native/core": "3.6.1",
"@ionic-native/device": "^3.8.0",
"@ionic-native/file": "^3.7.0",
"@ionic-native/network": "^3.8.0",
"@ionic-native/social-sharing": "^3.7.0",
"@ionic-native/splash-screen": "3.6.1",
"@ionic-native/status-bar": "3.6.1",
"@ionic-native/toast": "^3.8.0",
"@ionic/storage": "2.0.1",
"c3": "^0.4.11",
"ionic-angular": "3.2.1",
"ionicons": "3.0.0",
"js-logger": "^1.3.0",
"jslogger": "^1.0.3",
"jszip": "^3.1.3",
"lodash": "^4.17.4",
"moment": "^2.17.1",
"moment-duration-format": "^1.3.0",
"ng2-translate": "^5.0.0",
"rxjs": "5.1.1",
"semaphore-async-await": "^1.3.2",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.10"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"@ionic/cli-plugin-ionic-angular": "1.0.0",
"@types/c3": "^0.4.38",
"@types/jasmine": "^2.5.42",
"@types/jszip": "0.0.32",
"@types/lodash": "^4.14.51",
"@types/moment-duration-format": "^1.3.1",
"@types/node": "^7.0.5",
"codecov": "^1.0.1",
"install": "^0.8.7",
"jasmine-core": "^2.5.2",
"jasmine-spec-reporter": "^3.2.0",
"karma": "^1.4.1",
"karma-chrome-launcher": "^2.0.0",
"karma-jasmine": "^1.1.0",
"karma-mocha-reporter": "^2.2.2",
"karma-remap-istanbul": "^0.6.0",
"ts-node": "^2.1.0",
"tslint": "^4.4.2",
"tslint-eslint-rules": "^3.3.0",
"typescript": "^2.2.1"
},
Maintenant, si je construis avec le drapeau -prod (il fonctionne bien sans cela), j'obtiens l'erreur suivante...
[16:50:08] webpack started ...
Error: ./~/jszip/lib/index.js
Module build failed: RangeError: Maximum call stack size exceeded
at Object.forEachChild (D:\dev\myapp\node_modules\typescript\lib\typescript.js:14735:26)
at traverse (D:\dev\myapp\node_modules\typescript\lib\typescript.js:7271:31)
at Object.forEachReturnStatement (D:\dev\myapp\node_modules\typescript\lib\typescript.js:7251:16)
at checkAndAggregateReturnExpressionTypes (D:\dev\myapp\node_modules\typescript\lib\typescript.js:40055:16)
at getReturnTypeFromBody (D:\dev\myapp\node_modules\typescript\lib\typescript.js:39965:29)
at getReturnTypeOfSignature (D:\dev\myapp\node_modules\typescript\lib\typescript.js:31190:28)
at resolveNewExpression (D:\dev\myapp\node_modules\typescript\lib\typescript.js:39483:21)
at resolveSignature (D:\dev\myapp\node_modules\typescript\lib\typescript.js:39639:28)
at getResolvedSignature (D:\dev\myapp\node_modules\typescript\lib\typescript.js:39669:26)
at checkCallExpression (D:\dev\myapp\node_modules\typescript\lib\typescript.js:39696:29)
@ ./src/providers/file-logger.ts 58:0-28
@ ./src/app/app.module.ngfactory.ts
@ ./src/app/main.ts,./~/d3/d3.js
Module build failed: RangeError: Maximum call stack size exceeded
at RegExp.[Symbol.replace] (native)
at String.replace (native)
at formatStringFromArgs (D:\dev\myapp\node_modules\typescript\lib\typescript.js:2365:21)
at Object.chainDiagnosticMessages (D:\dev\myapp\node_modules\typescript\lib\typescript.js:2433:20)
at reportNonexistentProperty (D:\dev\myapp\node_modules\typescript\lib\typescript.js:38290:28)
at checkPropertyAccessExpressionOrQualifiedName (D:\dev\myapp\node_modules\typescript\lib\typescript.js:38332:
21)
at checkPropertyAccessExpression (D:\dev\myapp\node_modules\typescript\lib\typescript.js:38274:20)
at checkExpressionWorker (D:\dev\myapp\node_modules\typescript\lib\typescript.js:41158:28)
at checkExpression (D:\dev\myapp\node_modules\typescript\lib\typescript.js:41115:42)
at checkExpressionWithContextualType (D:\dev\myapp\node_modules\typescript\lib\typescript.js:40983:26)
@ ./src/pages/mypage/mypage.ts 61:0-25
@ ./src/app/app.module.ts
@ ./src/app/app.module.ngfactory.ts
@ ./src/app/main.ts
J'ai trouvé la cause de ce problème dans les deux librairies. C3/D3 et jszip . Si j'utilise l'un ou l'autre de ces éléments dans un petite structure nouvellement créée L'application Ionic 3, puis il y a no un problème.
J'ai parcouru de nombreux autres rapports de webpack lançant cette erreur, mais je ne vois pas pourquoi cela se produit maintenant pour moi, dans mon projet existant.
Cela se produit soit pour la nouvelle version 3 de Ionic CLI, soit pour une version plus ancienne (2.2.3) lorsque je l'ai mise à jour.
[UPDATE1]
Sur une deuxième machine (Windows 10) avec node v6.9.4 (la version précédente était node 7.something), et npm 4.2.0, j'obtiens une erreur similaire mais formatée différemment...
[16:31:04] webpack started ...
[16:31:35] webpack finished in 31.23 s
[16:31:35] sass started ...
[16:31:36] transpile bundle started ...
[16:31:44] build prod failed: Maximum call stack size exceeded
[16:31:44] ionic-app-script task: "build"
[16:31:44] RangeError: Maximum call stack size exceeded
RangeError: Maximum call stack size exceeded
at checkNonNullExpression (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:38258:40)
at resolveNewExpression (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:39433:34)
at resolveSignature (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:39639:28)
at getResolvedSignature (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:39669:26)
at checkCallExpression (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:39696:29)
at checkExpressionWorker (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:41163:28)
at checkExpression (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:41115:42)
at checkExpressionCached (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:40996:38)
at H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:40058:32
at traverse (H:\dev\myapp\upgradeto3\node_modules\typescript\lib\typescript.js:7255:28)
[UPDATE2]
Comme autre test, j'ai ajouté une nouvelle page vide, et rien d'autre que l'importation C3, puis un appel à une seule fonction (generate) de la bibliothèque.
Cette nouvelle page obtient la même erreur.
Quelqu'un a-t-il une idée de la façon dont on peut retrouver ce problème ou le résoudre ? Je suis à court d'idées et je n'arrive pas à redémarrer le projet à partir de zéro.
Merci d'avance pour toute aide
[UPDATE3]
J'ai pensé essayer de mettre à jour TypeScript à la dernière version 2.3.2. Lorsque je réexécute npm install, j'obtiens quelques avertissements
+-- UNMET PEER DEPENDENCY @angular/core@4.1.0
+-- UNMET PEER DEPENDENCY @angular/http@4.1.0
`-- typescript@2.3.2
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.1: wanted {"os":"darwin","arch":"any"} (curre
nt: {"os":"win32","arch":"x64"})
npm WARN ng2-translate@5.0.0 requires a peer of @angular/core@^2.0.0 but none was installed.
npm WARN ng2-translate@5.0.0 requires a peer of @angular/http@^2.0.0 but none was installed.
Je ne comprends pas bien les deux UNMET PEER DEPENDENCY
car j'ai exactement @angular/core@4.1.0
y @angular/http@4.1.0
installé.
En tout cas, j'ai toujours le même débordement. Je ne sais vraiment pas quoi essayer ensuite. Encore une fois, ces bibliothèques se construisent bien dans une application Ionic nouvellement créée, peut-être parce qu'elle est beaucoup plus petite ?
J'ai aussi trouvé cette question mais il est un peu différent du mien ici...