"Uncaught Error: невозможно разрешить все параметры для" ошибки времени выполнения при обновлении с Angular 4 до 5.0.1
Это хорошо в Angular 4.x, только не в Angular 5.0.1. Этот проект создан с помощью Angular CLI.
compiler.js:466 Uncaught Error: Can't resolve all parameters for RegistrationService: (?).
at syntaxError (compiler.js:466)
at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15546)
at CompileMetadataResolver._getTypeMetadata (compiler.js:15381)
at CompileMetadataResolver._getInjectableMetadata (compiler.js:15361)
at CompileMetadataResolver.getProviderMetadata (compiler.js:15721)
at eval (compiler.js:15632)
at Array.forEach (<anonymous>)
at CompileMetadataResolver._getProvidersMetadata (compiler.js:15592)
at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15160)
at CompileMetadataResolver.getNgModuleSummary (compiler.js:14998)
syntaxError @ compiler.js:466
CompileMetadataResolver._getDependenciesMetadata @ compiler.js:15546
CompileMetadataResolver._getTypeMetadata @ compiler.js:15381
CompileMetadataResolver._getInjectableMetadata @ compiler.js:15361
CompileMetadataResolver.getProviderMetadata @ compiler.js:15721
(anonymous) @ compiler.js:15632
CompileMetadataResolver._getProvidersMetadata @ compiler.js:15592
CompileMetadataResolver.getNgModuleMetadata @ compiler.js:15160
CompileMetadataResolver.getNgModuleSummary @ compiler.js:14998
(anonymous) @ compiler.js:15086
CompileMetadataResolver.getNgModuleMetadata @ compiler.js:15071
JitCompiler._loadModules @ compiler.js:33486
JitCompiler._compileModuleAndComponents @ compiler.js:33447
JitCompiler.compileModuleAsync @ compiler.js:33363
CompilerImpl.compileModuleAsync @ platform-browser-dynamic.js:230
PlatformRef.bootstrapModule @ core.js:5446
(anonymous) @ main.ts:12
../../../../../src/main.ts @ main.bundle.js:640
__webpack_require__ @ inline.bundle.js:55
1 @ main.bundle.js:670
__webpack_require__ @ inline.bundle.js:55
webpackJsonpCallback @ inline.bundle.js:26
(anonymous) @ main.bundle.js:1
Вот как выглядит конструктор:
constructor(
private apiHelperService: ApiHelperService
) {
}
Класс имеет @Injectable()
@Injectable()
export class ApiHelperService {
Он также правильно импортирован в модуль поставщиков.
providers: [
AuthGuard,
ApiHelperService,
Если я изменю это на это, то ошибка исчезнет, и это сработает, но затем он захочет, чтобы вы заменили каждый конструктор во всем решении на этот синтаксис, который я не считаю корректным.
@Inject(ApiHelperService) private apiHelperService: ApiHelperService
Вот мой tsconfig.json, для которого для emitDecoratorMetadata правильно установлено значение true
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
2 ответа
В сообщении блога Angular 5 Update автор упоминает, что вместо статического инжектора они используют статический инжектор, и упоминает, что полифиллы отражений больше не нужны, но в моем случае это было так.
Если вы удалили полифиллы для отражений, попробуйте добавить их снова:
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';
Я надеюсь, что это проснется и для вас.
В моем случае для миграции на Angular 6.1 это было пропущено:
import "reflect-metadata";
import "zone.js";
внутри boot
файл.
В ошибке упоминается, что вы используете конструктор wron для RegistrationService.