Error: Can't resolve 'core-js/es7/reflect' in '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models
Asked Answered
W

12

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"
  }
}
Windblown answered 28/3, 2019 at 13:32 Comment(9)
Did you clean your node_modules, node cache and try npm install from fresh before running ng serve?Attila
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?Windblown
You should install [email protected]Attila
yes it worked! thank youWindblown
Adding it as answer, please accept.Attila
Did face the same issue! but thanks to @nircraft, it worked for me too.Freshet
In core-js@3 es7 path removed. Use, for example, core-js/proposals/reflect-metadata. Here is the github link linkThermometry
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.Isador
For projects being upgraded to Angular 8 or later, you can uninstall core.js as a dependency: #56892743Wolfe
A
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.

Attila answered 28/3, 2019 at 14:1 Comment(7)
npm install --save core-js@^2.5.0, worked for me, thanksRatite
Works for me too !!Freshet
I decreased the version in package.json to "core-js": "^2.5.4", and run yarn, that worked for me.Lactose
Worked !! Thank youUnwarranted
Confirmed that npm install --save core-js@^2.5.0 worked for me as wellOhg
For Angular 13, finally I succeeded to get 'ng test' working with ==> npm install --save core-js@^3.3Neibart
This might have been OK back in 2019 but seems very bad advice now since "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."Punkie
R
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.

Retentive answered 5/4, 2019 at 20:53 Comment(4)
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?Moffett
for me works this : "paths": { "core-js/es7/reflect": ["../node_modules/core-js/proposals/reflect-metadata"], "core-js/es6/*": ["../node_modules/core-js/es/*"] },Algarroba
Ran ncu which updated all my packages to the latest then used the above and it worked for me.Drumm
I had to add "baseUrl": "." to make it works. Thanks mrapi amd Medeni baykalButton
T
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
Toothsome answered 30/7, 2019 at 11:11 Comment(1)
For a similar issue this worked, but I needed to remove the references to core-js/es{6,7}/reflect from my polyfills.tsLang
C
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";

Catheycathi answered 28/3, 2019 at 16:0 Comment(2)
This worked for me perfectly - error started after upgrading to angular 8 but your solution worked.Aerosphere
This, among all the answers, was for me (Angular 11) the solution. Thank you, @JoffreyHydroplane
F
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..

Filibertofilibuster answered 4/9, 2019 at 7:19 Comment(0)
D
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';

Dichromate answered 6/11, 2019 at 16:13 Comment(2)
Can you explain a bit more?Myoglobin
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.Dichromate
F
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

Franctireur answered 8/7, 2019 at 13:53 Comment(0)
N
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.

Newspaperwoman answered 25/7, 2019 at 23:31 Comment(1)
Basically the same as this answer.Undervest
V
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

Verrazano answered 6/5, 2020 at 6:52 Comment(0)
M
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]
Milt answered 14/5, 2019 at 7:58 Comment(0)
P
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

Puppis answered 5/1, 2021 at 11:14 Comment(0)
C
0

For Angular 7

From package.json remove:

"core-js": "3.6.5",

because it is part of the Angular package.

Cornuted answered 19/5, 2020 at 8:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.