1

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.

that_guy
  • 2,313
  • 4
  • 33
  • 46

2 Answers2

0

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

Max Tacco
  • 26
  • 2
  • I also had to end up using the paths-plugin fix described here: https://github.com/angular/angular-cli/issues/8117 – that_guy Dec 28 '17 at 14:15
  • to make this more universal you can edit `angular.json` and set `preserveSymlinks: true` in 'options` for `browser`. Also to be able to run tests do the same for `karma` builder - more details here https://stackoverflow.com/a/55023801/3021889 – ciekawy Mar 06 '19 at 15:43
0

Import LOCALE_ID module in your testing file and then export as GLOBAL_PROVIDER.

import { LOCALE_ID } from '@angular/core';


export const GLOBAL_PROVIDER = [
  { provide: LOCALE_ID, useValue: 'en'}
];
Samyak Jain
  • 856
  • 1
  • 9
  • 12