Reputation: 1033
After updating to Angular 7.3.6, I get the following error on ng serve:
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"
}
}
Upvotes: 92
Views: 76243
Reputation: 8478
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.
Upvotes: 113
Reputation: 101
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
Upvotes: 1
Reputation: 1303
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..
Upvotes: 25
Reputation: 477
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]
Upvotes: 1
Reputation: 367
For Angular 7
From package.json remove:
"core-js": "3.6.5",
because it is part of the Angular package.
Upvotes: 0
Reputation: 99
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
Upvotes: 4
Reputation: 106
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';
Upvotes: 6
Reputation: 4333
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.
Upvotes: 41
Reputation: 61994
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:
core-js
from my package.json
dependenciesimport 'core-js/es7/reflect';
from my test.ts
Upvotes: 34
Reputation: 51
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.
Upvotes: 4
Reputation: 71
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
Upvotes: 4
Reputation: 1846
The version 3.0 of core-js has some breaking changes:
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";
Upvotes: 30