typescript - "Maksimal størrelse på kallestakken er overskredet" i Angular 9 ng build --prod for et bibliotek


Jeg har et bibliotek som jeg kan kompilere med Angular 9. Men hvis jeg endrer flagget til --prod, som praktisk talt gjør "enableIvy": false, får jeg

[feil] RangeError: Maksimal kalle-stakkstørrelse overskredet

at Object.pathIsRelative (...\node_modules\typescript\lib\typescript.js:5778:34)

at tryLoadModuleUsingPathsIfEligible (...\node_modules\typescript\lib\typescript.js:28346:37)

ved tryLoadModuleUsingOptionalResolutionSettings (...\node_modules\typescript\lib\typescript.js:28334:24)

at tryResolve (...\node_modules\typescript\lib\typescript.js:28479:28)

på ...\node_modules\typescript\lib\typescript.js:28471:69

på Object.forEach (...\node_modules\typescript\lib\typescript.js:309:30)

ved nodeModuleNameResolverWorker (...\node_modules\typescript\lib\typescript.js:28471:25)

på nodeModuleNameResolver (...\node_modules\typescript\lib\typescript.js:28464:16)

på Object.resolveModuleName (...\node_modules\typescript\lib\typescript.js:28238:30)

på CompilerHostAdapter.getMetadataFor (...\node_modules\angular\compiler-cli\src\metadata\bundler.js:567:37)

Jeg introduserte en konsoll-debug-melding i function tryLoadModuleUsingPathsIfEligible(extensions, moduleName, loader, state)-funksjonen, og det ser ut til å være en løkke med omtrent 20 moduleNames. Jeg må nevne at jeg IKKE får noen advarsel om sirkulær avhengighet hvis jeg kompilerer uten --prod-flagget.

Oppdatering: Jeg har fikset de sirkulære avhengighetene, og jeg har ikke flere advarsler av noe slag.

Svar #1

I mitt tilfelle, med Angular 16, har jeg ved et uhell lagt til en komponent (ikke-standalone) i imports (i stedet for declarations):

@NgModule({
  imports: [
    CommonModule,
    TranslateModule,
    AuthModule,
    RouterModule,
    HeaderComponent, // <- invalid import of a Component
  ],
  declarations: [AvatarComponent],
  exports: [AvatarComponent],
  providers: [],
})
export class SharedHeaderModule {}

I tillegg er det noen ganger nødvendig å kjøre ng serve på nytt.

Svar #2

Jeg hadde det samme problemet med angular 12.1.1, jeg hadde ingen sirkelavhengigheter, løsningen var å endre "enableIvy: false" til "compilationMode": "partial".

Se Angular-dokumentasjonen.

Relaterte artikler