2017-10-12 3 views
2

Après avoir installé le plug-in AoT (https://www.npmjs.com/package/@ngtools/webpack) pour webpack, dynamic requires ne fonctionnent plus:ATdD + Webpack + JSON dynamique nécessite

// Example that used to work 
public getJson<T>(fileName: String): T { 
    return require(`../../${fileName}_${this.lang}.json`); 
} 

Avec la norme ts-loader ou awesome-typescript-loader etc, dynamic requires travaillé et webpack empaqueté les json fichiers dans le lot principal app. Cependant, avec le plugin AoT/Webpack, les fichiers json ne sont pas du tout regroupés. Je ne pense même pas que le aot loader itère sur les fichiers json plus.

Des idées pour que ça marche à nouveau? Merci.

Info:

https://github.com/angular/angular-cli/issues/3306

https://github.com/angular/angular-cli/pull/4153

Mise à jour:

fonctionne un peu avec SystemJS -> System.import() mais de façon erratique https://github.com/angular/angular-cli/issues/6629#issuecomment-336411537

Répondre

2

solution consiste à utiliser System.import() pour construire la charge et regrouper les fichiers dynamiques utilisent alors le mécanisme standard de webpack pour charger les fichiers réels:

public getLazyFiles<T>(somePath: string): T { 
     /* AoT Hack - causes the AoT to find and prepare the dynamically loaded files */ 
     System.import(`../../${somePath}_${this.someSuffix}.json`); 
     /* ------- */ 
     // This is then used by webpack to actually load the files 
     return require(`../../${somePath}_${this.someSuffix}.json`); 
    } 

Pourquoi cette solution de contournement est nécessaire est expliquée ici: https://github.com/angular/angular-cli/issues/6629#issuecomment-336478854