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'}
];
Другие вопросы по тегам