3 votes

Impossible de résoudre tous les paramètres pour ApplicationModule : ( ?)

Je viens de migrer un module d'application pour en faire une bibliothèque importable.

J'essaie de faire fonctionner les tests correctement, comme ils fonctionnaient auparavant, mais j'obtiens cette erreur :

Error: Can't resolve all parameters for ApplicationModule: (?).
at syntaxError (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:1275:17)
at CompileMetadataResolver._getDependenciesMetadata (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:11176:35)
at CompileMetadataResolver._getTypeMetadata (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:11069:26)
at CompileMetadataResolver.getNgModuleMetadata (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:10937:24)
at CompileMetadataResolver.getNgModuleSummary (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:10747:35)
at eval (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:10861:51)
at Array.forEach (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:10849:49)
at CompileMetadataResolver.getNgModuleSummary (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:10747:35)
at eval (webpack:///C:/Repositories/MyProject/my-library/node_modules/@angular/compiler/fesm5/compiler.js?:10861:51)

J'ai vu ces solutions possibles : Erreur : Impossible de résoudre tous les paramètres pour ApplicationModule : ( ?) y Impossible de résoudre les paramètres pour ApplicationModule : ( ?) mais ils ne peuvent pas résoudre mon problème.

projets/my-library/src/test.ts

// This file is required by karma.conf.js and loads recursively all the .spec and framework files

import { getTestBed } from '@angular/core/testing';
import {
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
import 'core-js/es7/reflect';
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';

declare const require: any;

// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

Faites-moi savoir si vous avez besoin de plus d'informations pour déterminer où se situe le problème.

6voto

Alavaros Points 1404

Enfin, j'ai trouvé où était le problème, j'ai eu du mal à le trouver car il n'était pas lié. Le problème vient de cette configuration de tslint :

tslint.json :

...
"ordered-imports" [
  true,
  { "named-imports-order": "lowercase-last" }
]
...

Même si la configuration est seulement "ordered-imports": true cela causait un problème dans test.ts lorsque ng lint est lancé, j'ai donc modifié ce fichier pour répondre à l'exigence de tslint :

test.ts :

// This file is required by karma.conf.js and loads recursively all the .spec and framework files

import { getTestBed } from '@angular/core/testing';
import {
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
import 'core-js/es7/reflect'; // <-- Moved from the top of imports
import 'zone.js/dist/zone'; // <-- Moved from the top of imports
import 'zone.js/dist/zone-testing'; // <-- Moved from the top of imports

declare const require: any;

// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

Et ce fichier était à l'origine de l'erreur que je recevais. Ce fichier doit ressembler à ceci :

Correct test.ts :

import 'core-js/es7/reflect';
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';

declare const require: any;

// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

1voto

Serigne Fatty Points 11

Pour angular 7 et plus, essayez d'ajouter dans le fichier polyfill.ts :

import "core-js/features/reflect";

0voto

Zlatko Points 2723

Vous avez une dépendance dans votre module d'application que vous n'avez pas fournie ou importée de quelque manière que ce soit. Vous pouvez déterminer laquelle en regardant votre ApplicationModule Il est probable qu'un service ou un élément similaire soit injecté dans le constructeur et que vous ne l'ayez pas fourni dans la méthode imports de NgModule métadonnées.

0voto

shanthan Points 33

Ajoutez ceci dans le fichier polifills.ts

 import 'core-js/es7/reflect';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X