Angular 5 Upgrade NullInjectorError: Нет поставщика для InjectionToken LocaleId
У меня есть приложение Angular 4, которое я обновил до Angular 5 с CLI 1.5.4. У меня также есть общая библиотека, использующая ссылку npm. После обновления мне пришлось добавить это в мой tsconfig.app.json, чтобы снова получить сборку CLI:
"include": [
"./**/*.ts",
"../node_modules/my-lib/src/**/*.ts",
"../node_modules/my-lib/index.ts",
"../node_modules/my-lib/ng2-icad-cf.ts"
],
После успешной сборки, я вижу следующую ошибку при посещении localhost:4200
NullInjectorError: No provider for InjectionToken LocaleId!
Я не смог найти никаких ссылок на LOCALE / LocaleId в моем проекте. Я подозреваю, что связанная библиотека может быть проблемой, поскольку у меня была та же ошибка NullIjectorError для Http (библиотека использует Http, проект использует HttpClient), но с тех пор она исчезла после добавления HttpClient в основной модуль библиотеки, даже после возврата и удаления его... очень странно.
1 ответ
Я испытал ту же проблему.
Во-первых, убедитесь, что вы используете "peerDependencies" для любых библиотек Angular, от которых зависит ваш модуль, как описано здесь: https://github.com/angular/angular-cli/issues/3854
Затем попробуйте запустить / собрать приложение, передав --preserve-symlinks в Angular CLI. Например:
ng serve --preserve-symlinks
См. https://github.com/angular/angular-cli/issues/8677 для получения более подробной информации.
Также, это может помочь: https://github.com/angular/angular-cli/wiki/stories-linked-library
Импортируйте модуль LOCALE_ID в файл тестирования, а затем экспортируйте его как GLOBAL_PROVIDER.
import { LOCALE_ID } from '@angular/core';
export const GLOBAL_PROVIDER = [
{ provide: LOCALE_ID, useValue: 'en'}
];