Angular 5升级NullInjectorError:没有InjectionToken LocaleId的提供者

时间:2017-11-28 20:10:45

标签: angular npm angular-cli angular5 npm-link

我有一个Angular 4应用程序,我已使用CLI 1.5.4升级到Angular 5。我还有一个使用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的引用。我怀疑链接库可能是问题,因为我对Http有相同的NullIjectorError(库使用Http,项目使用HttpClient)但是在将HttpClient添加到库的主模块之后它已经消失了,即使在恢复并删除它之后...很奇怪。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

首先,确保使用" peerDependencies"对于您的模块所依赖的任何Angular库,如下所述:https://github.com/angular/angular-cli/issues/3854#issuecomment-274344771

然后通过将--preserve-symlinks传递给Angular CLI来尝试运行/构建应用程序。例如:

setUniqueId

有关详细信息,请参阅https://github.com/angular/angular-cli/issues/8677#issuecomment-347885068

此外,这可能有所帮助:https://github.com/angular/angular-cli/wiki/stories-linked-library

答案 1 :(得分:0)

在您的测试文件中导入LOCALE_ID模块,然后将其导出为GLOBAL_PROVIDER。

W(ESPN,A)·W(Nike,P) + W(ESPN,G)·W(Male,P) + W(Nike,G)·W(Male,A)