Angular 2 + CLI:超出最大调用堆栈大小时出错

Ago*_*one 5 typescript webpack angular-cli angular

我的Ng2项目有问题需要3到4天.

版本.

  • @ angular/cli:1.0.0-rc.2
  • 节点:6.9.2
  • os:win32 x64
  • @ angular/common:2.4.9
  • @ angular/compiler:2.4.9
  • @ angular/core:2.4.9
  • @ angular/forms:2.4.9
  • @ angular/http:2.4.9
  • @ angular/platform-b​​rowser:2.4.9
  • @ angular/platform-b​​rowser-dynamic:2.4.9
  • @ angular/router:3.4.9
  • @ angular/cli:1.0.0-rc.2
  • @ angular/compiler-cli:2.4.9

Repro步骤.

我运行serv/ng测试或ng build,我有:"超出最大调用堆栈大小的错误"

失败给出的日志.

"服务"之后

$ ng serve
** NG Live Development Server is running on http://localhost:4200 **
Hash: a73c4ecdb8222366629e
Time: 16536ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 405 kB {5} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 41.1 kB {4} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 149 kB {5} [initial] [rendered]
chunk    {3} scripts.bundle.js, scripts.bundle.js.map (scripts) 244 kB {5} [initial] [rendered]
chunk    {4} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.75 MB [initial] [rendered]
chunk    {5} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]

ERROR in Maximum call stack size exceeded
webpack: Failed to compile.
Run Code Online (Sandbox Code Playgroud)

我节省了一次,一切都没问题:

$ ng serve
** NG Live Development Server is running on http://localhost:4200 **
Hash: a73c4ecdb8222366629e
Time: 16536ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 405 kB {5} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 41.1 kB {4} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 149 kB {5} [initial] [rendered]
chunk    {3} scripts.bundle.js, scripts.bundle.js.map (scripts) 244 kB {5} [initial] [rendered]
chunk    {4} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.75 MB [initial] [rendered]
chunk    {5} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]

ERROR in Maximum call stack size exceeded
webpack: Failed to compile.
webpack: Compiling...
Hash: 02fd7618c3e2de3db52e
Time: 9915ms
chunk    {0} 0.chunk.js, 0.chunk.js.map 926 kB {1} {2} {3} {5} [rendered]
chunk    {1} 1.chunk.js, 1.chunk.js.map 397 kB {0} {2} {3} {5} [rendered]
chunk    {2} 2.chunk.js, 2.chunk.js.map 33.1 kB {0} {1} {3} {5} [rendered]
chunk    {3} 3.chunk.js, 3.chunk.js.map 2.96 kB {0} {1} {2} {5} [rendered]
chunk    {4} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 405 kB {9} [initial] [rendered]
chunk    {5} main.bundle.js, main.bundle.js.map (main) 41.1 kB {8} [initial] [rendered]
chunk    {6} styles.bundle.js, styles.bundle.js.map (styles) 149 kB {9} [initial] [rendered]
chunk    {7} scripts.bundle.js, scripts.bundle.js.map (scripts) 244 kB {9} [initial] [rendered]
chunk    {8} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.75 MB [initial] [rendered]
chunk    {9} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
Run Code Online (Sandbox Code Playgroud)

而对于"ng测试"是一样的.

有什么想法解决这个问题?

小智 9

我发现调试它的最好方法是:

ng serve --aot
Run Code Online (Sandbox Code Playgroud)

如果发现任何错误并且出现可理解的错误,它将退出构建.


Öme*_*mer 8

我遇到了同样的错误.通过删除不必要的导入解决.

导致此错误的原因是您有循环模块依赖性问题.

例如:

'A'模块导入(依赖于)'B'模块

'B'模块导入(依赖于)'A'模块

我建议你构建一个通用模块,其他模块应该导入公共模块.

如果你有多余的进口删除不必要的进口.


小智 5

如果 getter (或方法)返回自身,您将获得循环引用,从而导致超出最大调用堆栈大小异常。前任。

public get test(): any {
    return test;
Run Code Online (Sandbox Code Playgroud)

}

检查您的代码。