【问题标题】:Angular 5 Upgrade NullInjectorError: No provider for InjectionToken LocaleIdAngular 5 升级 NullInjectorError:没有 InjectionToken LocaleId 的提供者
【发布时间】:2020-04-27 19:28:00
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题。

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

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

    ng serve --preserve-symlinks
    

    更多详情请见https://github.com/angular/angular-cli/issues/8677#issuecomment-347885068

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

    【讨论】:

    【解决方案2】:

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

    import { LOCALE_ID } from '@angular/core';
    
    
    export const GLOBAL_PROVIDER = [
      { provide: LOCALE_ID, useValue: 'en'}
    ];
    

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 1970-01-01
      • 2021-12-18
      • 2019-04-18
      • 2018-10-19
      • 2021-09-08
      • 2021-12-15
      • 2020-06-04
      • 2022-01-03
      相关资源
      最近更新 更多