Search code examples
angularnpmangular-cliangular5npm-link

Angular 5 Upgrade NullInjectorError: No provider for InjectionToken LocaleId


I have an Angular 4 app that I have upgraded to Angular 5 with CLI 1.5.4. I also have a shared library using npm link. After upgrading I had to add this to my tsconfig.app.json to get the CLI building again:

  "include": [
    "./**/*.ts",
    "../node_modules/my-lib/src/**/*.ts",
    "../node_modules/my-lib/index.ts",
    "../node_modules/my-lib/ng2-icad-cf.ts"
  ],

After a successful build, I am presented with the following error when visiting localhost:4200

NullInjectorError: No provider for InjectionToken LocaleId!

I could not find any references to LOCALE / LocaleId in my project. I suspect the linked library might be the issue as I had the same NullIjectorError for Http (library uses Http, project uses HttpClient) but it has since disappeared after adding HttpClient to the library's main module, even after reverting back and removing it... very strange.


Solution

  • I experienced the same issue.

    First, make sure to use "peerDependencies" for any Angular libraries that your module depends on as described here: https://github.com/angular/angular-cli/issues/3854#issuecomment-274344771

    Then try running / building the app by passing --preserve-symlinks to Angular CLI. For example:

    ng serve --preserve-symlinks
    

    See https://github.com/angular/angular-cli/issues/8677#issuecomment-347885068 for more details.

    Also, this may help: https://github.com/angular/angular-cli/wiki/stories-linked-library