Error: Can't resolve 'core-js/es7/reflect' in '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models
更新到Angular 7.3.6后,在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
'\
ode_modules@angular-devkit\\build-angular\\src\\angular-cli-files\\models'
这是我的package.json依赖项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | { "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" } } |
您应该安装包含此文件/模块的
如果您想使用3.0版,则可以在
1 2 3 4 5 6 7 8 9 10 | { "compilerOptions": { ... "paths": { "core-js/es7/reflect": [ "node_modules/core-js/proposals/reflect-metadata" ] } } } |
注意:您需要检查
对于Angular 8(来源):
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).
我已解决:
-
从我的
package.json 依赖项中删除core-js -
从我的
test.ts 中删除import 'core-js/es7/reflect';
core-js 3.0版具有一些重大更改:
https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md
您应该在其中一个文件中找到与此行类似的行:
更改为此:
@medeni的tsconfig.json解决方案可以工作,但在自己检查之前不要复制路径。对我来说,必须是:
1 2 3 | "paths": { "core-js/es7/reflect": ["../node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata"] } |
../是因为tsconfig.json由src / tsconfig.app.json或src / tsconfig.spec.json扩展,所以/ src是工作目录。
注意:我正在使用Angular CLI 8.1.0
就我而言,我只是换了->
1 2 | import 'core-js/es6/reflect'; import 'core-js/es7/reflect'; |
至
1 2 | import 'core-js/es/reflect'; import 'core-js/es/reflect'; |
而且有效。
我通过在
1 2 3 | /** 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'; |
确保您具有最新的core-js更新,并且一切正常。
像
对于EX:
我找到了可能的答案。您有core-js版本3.0,此版本没有用于ES6和ES7的单独文件夹;这就是应用程序找不到正确路径的原因。
要解决此错误,您可以将core-js版本降级为2.5.7。此版本产生正确的目录结构,带有单独的ES6和ES7文件夹。
要降级版本,只需运行:
1 | npm i -S [email protected] |
对于Angular 7
从package.json中删除:
1 | "core-js":"3.6.5", |
因为它是Angular软件包的一部分。
对于最新版本(当前为-> 9),
兼容的core-js版本是" core-js":"?2.5.0"。
步骤1)删除节点模块。
步骤2)在package.json文件中,在dependecies对象中写入" core-js":"?2.5.0"。
步骤3)npm安装
那么它将很好地工作