0

Je travaille sur un projet Angular 4 qui est une plate-forme trois possible (mobile avec NativeScript, web et desktop avec Electron). puisque je vais avoir plusieurs codes à partager entre ces trois projets (services, modèles, pipe ...) J'ai créé un dossier partagé dans chaque dossier src de chacune de ces 3 applications. J'ai fait un copier coller pour synchroniser ce répertoire au niveau de ces 3 plateformes.Erreur non capturée: valeur inattendue 'SharedModule' importée par le module 'AppModule'. S'il vous plaît ajouter une annotation @NgModule

Très rapidement, le projet a commencé à se développer et la synchronisation est devenue un casse-tête, alors je commence à faire quelques recherches. J'avais plusieurs propositions mais celle qui me semblait la plus simple et qui se séparait déjà de ce que je faisais était de mettre le dossier partagé dans le répertoire racine de la solution et avec un lien symbolique je synchronise le contenu du dossier dans chaque projet.

J'utilisé un code assez agréable trouvé sur GitHub pour créer des liens symboliques https://github.com/NathanWalker/angular-seed-advanced/blob/master/tools/install.js

mais quand je produis le projet, j'ai cette erreur que je ne comprends pas

compiler.es5.js:1690 Uncaught Error: Unexpected value 'SharedModule' imported by the module 'AppModule'. Please add a @NgModule annotation. 
at syntaxError (compiler.es5.js:1690) 
at compiler.es5.js:15382 
at Array.forEach (<anonymous>) 
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15365) 
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26795) 
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._compileModuleAndComponents (compiler.es5.js:26768) 
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler.compileModuleAsync (compiler.es5.js:26697) 
at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_._bootstrapModuleWithZone (core.es5.js:4536) 
at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_.bootstrapModule (core.es5.js:4522) 
at Object.../../../../../src/main.ts (main.ts:11) 

mais ce qui est ombragé est que lorsque je supprime les liens symboliques et que je remets mon fichier manuellement, tout se construit normalement.

  1. Les liens symboliques sont-ils la cause de cette erreur? (J'ai l'impression). Si oui, comment le résoudre?

  2. Existe-t-il un autre moyen simple et efficace de partager mon code angulaire entre plusieurs projets?

+0

merci @hafler pour les corrections. Je parle français donc ... –

Répondre

1

Je trouve une solution après quelques recherches sur Google.

Il semble que ce soit un problème dans webpack angulaire-cli. Reportez-vous à ce lien pour plus de détails: https://github.com/webpack/webpack/issues/3148

Pour résoudre le problème, vous devez mettre votre source de lien symbolique sur un autre lecteur de votre ordinateur. Ça fonctionne bien pour moi.

  1. Je mis mon dossier de module partagé sur le lecteur de disque C: \
  2. créer un lien symbolique de jonction à partir du dossier partagé aux 3 projets de destinations (dossiers sur le lecteur D :). et tous les fichiers sont synchronisés. C'est beau.
+0

Salut @halfer je spkeak français. mon anglais n'est pas bon;) merci pour la correction –

+0

Pas de soucis @Jean, vous êtes les bienvenus! – halfer

+1

Merci @halfer. bonne journée –