You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行ng build --prod失败:调用栈大小超出上限(ag-grid相关)

Angular Production Build Fails with ag-grid: RangeError: Maximum call stack size exceeded

Problem Description

When running ng build --prod for an Angular project using ag-grid, the build fails with a RangeError: Maximum call stack size exceeded originating from the gridOptionsWrapper.js module in ag-grid. Here's the relevant build log:

==> ng build --prod 
Date: 2018-06-01T10:20:07.564Z 
Hash: e43a7d775a617f72e760 
Time: 84869ms 
chunk {scripts} scripts.385b291e179030219400.bundle.js (scripts) 137 kB [initial] [rendered] 
chunk {0} main.eb9c978f12021c39965e.bundle.js (main) 2.22 MB [initial] [rendered] 
chunk {1} polyfills.c9bd3d92b786a9531262.bundle.js (polyfills) 166 kB [initial] [rendered] 
chunk {2} styles.e270cced36800690ed11.bundle.css (styles) 307 kB [initial] [rendered] 
chunk {3} inline.318b50c57b4eba3d437b.bundle.js (inline) 796 bytes [entry] [rendered] 

ERROR in ./node_modules/ag-grid/dist/lib/gridOptionsWrapper.js 
Module build failed: RangeError: Maximum call stack size exceeded 
    at Object.forEachChild (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12719:26) 
    at traverse (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29674:110) 
    at visitNode (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12690:24) 
    at Object.forEachChild (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12821:24) 
    at traverse (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29674:110) 
    at visitNode (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12690:24) 
    at Object.forEachChild (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12915:24) 
    at traverse (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29674:110) 
    at visitNodes (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12699:30) 
    at Object.forEachChild (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:12875:24) 
    at traverse (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29674:110) 
    at containsArgumentsReference (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29657:56) 
    at getSignatureFromDeclaration (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29618:84) 
    at getSignaturesOfSymbol (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29708:37) 
    at resolveAnonymousTypeMembers (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:28899:43) 
    at resolveStructuredTypeMembers (/home/jhalliley/work/my-ui/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:29031:25)

Solutions to Fix the Build

Here are several proven ways to resolve this issue:

1. Disable Build Optimizer Temporarily

The Angular build-optimizer gets stuck in infinite recursion when processing ag-grid's type definitions. You can bypass this by disabling it:

  • Command Line: Run the build with the --build-optimizer=false flag:
    ng build --prod --build-optimizer=false
    
  • Configuration File: For older Angular versions using .angular-cli.json, modify the defaults.build section:
    "defaults": {
      "build": {
        "buildOptimizer": false
      }
    }
    
    For newer versions using angular.json, update the production configuration under projects.[your-project].architect.build.configurations:
    "production": {
      "buildOptimizer": false
      // ... other existing configs
    }
    

2. Upgrade ag-grid to a Compatible Version

This issue comes from circular references in ag-grid's type definitions that the build-optimizer couldn't handle. Later versions of ag-grid fixed this problem. Upgrade your ag-grid packages (both ag-grid and ag-grid-angular if using the Angular wrapper) to a version released after mid-2018 (e.g., v20.x or later, matching your Angular version compatibility).

3. Skip Third-Party Library Type Checks

Tell TypeScript to skip type checking for external libraries to avoid the stack overflow caused by ag-grid's problematic type definitions. Add this to your tsconfig.json:

"compilerOptions": {
  // ... other options
  "skipLibCheck": true
}

Issue Attribution

This is a compatibility issue between ag-grid and Angular's build-optimizer, not a bug in ng build itself. The root cause was circular references in ag-grid's type definitions that triggered infinite recursion in the build-optimizer's TypeScript processing logic. Later versions of ag-grid addressed these circular references, and newer build-optimizer versions also improved handling for such cases.

内容的提问来源于stack exchange,提问作者Tom Halliley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:08:53