Angular 获取模块生成失败:RangeError:升级到Ionic 3后超过最大调用堆栈大小
我刚刚将我的Ionic 2应用程序升级到了Ionic 3,包括框架、Ionic native和CLI 我现在有以下设置Angular 获取模块生成失败:RangeError:升级到Ionic 3后超过最大调用堆栈大小,angular,typescript,ionic-framework,webpack,ionic2,Angular,Typescript,Ionic Framework,Webpack,Ionic2,我刚刚将我的Ionic 2应用程序升级到了Ionic 3,包括框架、Ionic native和CLI 我现在有以下设置 "dependencies": { "@angular/animations": "4.1.0", "@angular/common": "4.1.0", "@angular/compiler": "4.1.0", "@angular/compiler-cli": "4.1.0", "@an
"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"
},
现在,如果我使用-prod标志进行构建(如果没有这个标志,它就可以了),我会得到以下错误
[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
我已经查到了2个libs,还有。如果我在一个新创建的小的爱奥尼亚3应用程序中使用这两个应用程序中的任何一个,那么就存在非问题
我已经阅读了很多关于webpack抛出此错误的其他报告,但我不明白为什么在我现有的项目中会发生这种情况
当我降级到新的Ionic CLI版本3或旧版本(2.2.3)时,都会发生这种情况
[UPDATE1]
在第二台机器(Windows 10)上运行节点v6.9.4(上面是节点7.something)和npm 4.2.0,我得到了类似但格式不同的错误
[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]
作为另一个测试,我添加了一个新的空页面,除了C3导入之外什么也没有添加,然后从库中调用单个函数(generate)
这个新页面会出现同样的错误
有人知道如何追踪/解决这个问题吗?我没有主意了,我就是不能再从空白处重新启动项目
提前谢谢你的帮助
[UPDATE3]
我想我应该尝试将TypeScript更新到最新的2.3.2。当我重新运行npm安装时,确实会收到一些警告
+-- 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.
我不太理解这两个未满足的对等依赖关系,因为我确实有@/core@4.1.0
和@angular/http@4.1.0
已安装
无论如何,我还是会得到同样的溢出。真的不知道下一步该怎么办。再一次,这些库在新创建的Ionic应用程序中都构建得很好,可能是因为它要小得多
我也发现了,但它看起来和我的有点不同…在从ionic 3.2.1升级到3.3.0之后运行ionic cordova build browser--prod
时出现了类似的错误。它仅在使用--prod
参数时发生
错误日志:
$ ionic cordova build browser --prod
Running app-scripts build: --prod --iscordovaserve --externalIpRequired --nobrowser
[13:22:25] build prod started ...
[13:22:25] clean started ...
[13:22:25] clean finished in 16 ms
[13:22:25] copy started ...
[13:22:25] ngc started ...
[13:22:37] ngc finished in 11.64 s
[13:22:37] preprocess started ...
[13:22:37] deeplinks started ...
[13:22:37] deeplinks finished in 594 ms
[13:22:37] optimization started ...
[13:22:38] copy finished in 12.65 s
[13:22:57] optimization finished in 19.56 s
[13:22:57] preprocess finished in 20.15 s
[13:22:57] webpack started ...
[WARN] Error occurred during command execution from a CLI plugin (@ionic/cli-plugin-cordova). Your plugins may be out of date.
Error: ./~/d3/d3.js
Module build failed: RangeError: Maximum call stack size exceeded
at checkNonNullExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:38397:40)
at checkPropertyAccessExpressionOrQualifiedName (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:38455:24)
at checkPropertyAccessExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:38413:20)
at checkExpressionWorker (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:41300:28)
at checkExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:41257:42)
at checkBinaryLikeExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:40834:28)
at checkBinaryExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:40827:20)
at checkExpressionWorker (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:41335:28)
at checkExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:41257:42)
at checkBinaryLikeExpression (C:\Projetos\MyProject\Frontend\node_modules\typescript\lib\typescript.js:40834:28)
@ ./~/c3/c3.js 830:70-83
@ ./src/components/c3-chart-component/c3-chart-adapter.ts
@ ./src/components/c3-chart-component/c3-chart-component.ts
@ ./src/pages/dashboard/dashboard.ngfactory.ts
@ ./src/pages/dashboard/dashboard.module.ngfactory.ts
@ ./src async
@ ./~/ionic-angular/util/ng-module-loader.js
@ ./src/app/app.module.ngfactory.ts
@ ./src/app/main.ts
对我来说,解决方案是使用最新的Ionic,包括最新的CLI,,除了imgx64建议的将TypeScript保持在2.3.0,您使用的是哪个版本的节点?在机器上使用node v6.10.3和npm v3.10.10可以很好地工作。我最初在机器上尝试了这一点,当时运行的是node版本7.0。我已经在第二台机器上尝试了构建,这台机器的节点是v6.9.4,npm 4.2.0。我得到了同样的错误,虽然没有太多的细节,因为它是从哪里来的,我将添加这些问题(因为不能在这里格式化)我们有一个构建脚本的问题添加了这个。在我看来,这似乎是缩小造成它。