92

After updating to Angular 7.3.6, I get the following error on ng serve:

enter image description here

ERROR in ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js Module not found: Error: Can't resolve 'core-js/es7/reflect' in '\node_modules@angular-devkit\build-angular\src\angular-cli-files\models'

Here is my package.json dependecies:

{
  "name": "frontend",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^7.2.11",
    "@angular/cdk": "^7.3.6",
    "@angular/common": "^7.2.11",
    "@angular/compiler": "^7.2.11",
    "@angular/core": "^7.2.11",
    "@angular/flex-layout": "^7.0.0-beta.24",
    "@angular/forms": "^7.2.11",
    "@angular/http": "^7.2.11",
    "@angular/material": "^7.3.6",
    "@angular/platform-browser": "^7.2.11",
    "@angular/platform-browser-dynamic": "^7.2.11",
    "@angular/router": "^7.2.11",
    "adm-zip": "^0.4.13",
    "core-js": "^2.6.5",
    "hammerjs": "^2.0.8",
    "rxjs": "^6.4.0",
    "rxjs-compat": "^6.0.0-rc.0",
    "tslib": "^1.9.3",
    "zone.js": "^0.9.0"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.13.7",
    "@angular/cli": "^7.3.7",
    "@angular/compiler-cli": "^7.2.11",
    "@angular/language-service": "^7.2.11",
    "@types/jasmine": "~3.3.12",
    "@types/jasminewd2": "~2.0.6",
    "@types/node": "~11.12.0",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.3.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^4.0.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^2.0.5",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "^6.0.0",
    "ts-node": "~8.0.3",
    "tslint": "~5.14.0",
    "typescript": "3.1.6"
  }
}
9
  • Did you clean your node_modules, node cache and try npm install from fresh before running ng serve? Commented Mar 28, 2019 at 13:36
  • yes I did, but the same error keeps on appearing and I don't know what else to do. Do you have any other suggestions? Commented Mar 28, 2019 at 13:46
  • 1
    You should install [email protected] Commented Mar 28, 2019 at 13:48
  • yes it worked! thank you Commented Mar 28, 2019 at 13:57
  • 2
    As of July 3, 2019, using Angular-CLI 8.0.6 and Angular 8.1.0, the above error will no longer happen on NEWLY GENERATED Angular apps because the offending import is no longer generated in /src/polyfills.ts. For older Angular applications, I suggest generating a temporary Angular app via: ``` ng new aaTemplate --skip-tests --skip-install ``` Compare the newly generated aaTemplate\src\polyfills.ts with your older application's polyfills.ts and you'll see what I'm talking about. Commented Jul 3, 2019 at 11:57

12 Answers 12

113

You should install [email protected] that contains this file/module. See preset-env docs.

Also note, however, that this is a very old version with known issues and is unsupported. From the module itself:

"core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js."

Please consider using one of the better solutions below.

Sign up to request clarification or add additional context in comments.

6 Comments

npm install --save core-js@^2.5.0, worked for me, thanks
Works for me too !!
I decreased the version in package.json to "core-js": "^2.5.4", and run yarn, that worked for me.
Confirmed that npm install --save core-js@^2.5.0 worked for me as well
For Angular 13, finally I succeeded to get 'ng test' working with ==> npm install --save core-js@^3.3
|
41

If you'd like to use version 3.0, you can add the a path to your tsconfig.json file.

{
    "compilerOptions": {
        ...
        "paths": {
            "core-js/es7/reflect": [
                "node_modules/core-js/proposals/reflect-metadata"
            ]
        }
    }
}

Note: You need check the node_modules/core-js/proposals/reflect-metadata relative path and correct it if needed in your project structure.

4 Comments

Hi I've seen this also on gh erro reports but haven't managed to make it work, just got the same Module not found: Error: Can't resolve 'core-js/es7/reflect' error....does yours works?
for me works this : "paths": { "core-js/es7/reflect": ["../node_modules/core-js/proposals/reflect-metadata"], "core-js/es6/*": ["../node_modules/core-js/es/*"] },
Ran ncu which updated all my packages to the latest then used the above and it worked for me.
I had to add "baseUrl": "." to make it works. Thanks mrapi amd Medeni baykal
34

For Angular 8 (source):

Angular CLI 8.0+ manages the required Angular polyfills directly and projects will not require a direct dependency on core-js (assuming an application does not manually include additional core-js polyfills).

I've resolved by:

  • removing core-js from my package.json dependencies
  • removing import 'core-js/es7/reflect'; from my test.ts

1 Comment

For a similar issue this worked, but I needed to remove the references to core-js/es{6,7}/reflect from my polyfills.ts
30

The version 3.0 of core-js has some breaking changes:

https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md

You should find a line similar to this in one of your files: import "core-js/es7/reflect";

Change it to this: import "core-js/proposals/reflect-metadata";

2 Comments

This worked for me perfectly - error started after upgrading to angular 8 but your solution worked.
This, among all the answers, was for me (Angular 11) the solution. Thank you, @Joffrey
25

In my case , i just changed -->

import 'core-js/es6/reflect';
import 'core-js/es7/reflect';

to

import 'core-js/es/reflect';

and it worked..

Comments

6

Removing the number at the end of 'es' in the path, like 'core-js/es/reflect' worked also for me.

For EX: import 'core-js/es7/reflect'; was changed to import 'core-js/es/reflect';

2 Comments

Can you explain a bit more?
Hi Dieter, the problem is that your are looking for the "reflect" module in a wrong folder. 1- open the "polyfills.ts" in your src folder. 2 - find the line where there is a line like "import 'core-js/es7/reflect';". Here it is 7 for me, it can be something else in your case. 3- Remove the 7 like that: "import 'core-js/es/reflect';" and it should works.
4

The tsconfig.json solution from @medeni works, but don't copy the path before checking it by yourself. For me it had to be:

"paths": {
  "core-js/es7/reflect": ["../node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata"]
}

the ../ is because tsconfig.json is extended by src/tsconfig.app.json or src/tsconfig.spec.json, so /src is the working directory.

note: I am using Angular CLI 8.1.0

Comments

4

I fixed it by adding this import: import 'core-js/proposals/reflect-metadata'; in my polyfills.ts file

/** Evergreen browsers require these. **/
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
import 'core-js/proposals/reflect-metadata';

Make sure you have the latest core-js update and everything should work.

1 Comment

Basically the same as this answer.
4

For angular latest version (currently -> 9) ,

compatible core-js version is "core-js": "~2.5.0".

step 1) Delete Node modules.

step 2) In package.json file, write "core-js": "~2.5.0" in dependecies object.

step 3) npm install

then It will work perfectly fine

Comments

1

I found possible answer. You have core-js version 3.0, and this version doesn't have separate folders for ES6 and ES7; that's why the application cannot find correct paths.

To resolve this error, you can downgrade the core-js version to 2.5.7. This version produces correct catalogs structure, with separate ES6 and ES7 folders.

To downgrade the version, simply run:

npm i -S [email protected]

Comments

1

I solved the problem by removing the number at the end of "es" in the path as in response to Module not found: Error: Can't resolve 'core-js/es7/reflect

Comments

0

For Angular 7

From package.json remove:

"core-js": "3.6.5",

because it is part of the Angular package.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.