更新到Angular 7.3.6后,在ng serve上出现以下错误:
错误 ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js 找不到模块:错误:无法解析“ core-js / es7 / reflect” '\ node_modules @ angular-devkit \ build-angular \ src \ angular-cli-files \ models'
这是我的package.json依赖项:
{
"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"
}
}
答案 0 :(得分:31)
您应该安装包含此文件/模块的core-js@2.5.x
。参见preset-env docs。
答案 1 :(得分:16)
Angular CLI 8.0+直接管理所需的Angular polyfill,并且项目不需要直接依赖core-js(假设应用程序不手动包含其他core-js polyfills)。
我的解决方法是:
core-js
依存关系中删除package.json
import 'core-js/es7/reflect';
中删除test.ts
答案 2 :(得分:6)
如果要使用3.0版,则可以将路径添加到tsconfig.json
文件中。
{
"compilerOptions": {
...
"paths": {
"core-js/es7/reflect": [
"node_modules/core-js/proposals/reflect-metadata"
]
}
}
}
答案 3 :(得分:4)
core-js的3.0版有一些重大更改:
您应该在其中一个文件中找到与以下内容类似的行:import "core-js/es7/reflect";
将其更改为此:import "core-js/proposals/reflect-metadata";
答案 4 :(得分:3)
@medeni的tsconfig.json解决方案可以工作,但是在您自己检查之前,请勿复制路径。对我来说必须是:
a roleId can't find
../是因为tsconfig.json由src / tsconfig.app.json或src / tsconfig.spec.json扩展,所以/ src是工作目录。
注意:我正在使用Angular CLI 8.1.0
答案 5 :(得分:2)
对于最新版本(当前为-> 9),
兼容的core-js版本为“ core-js”:“〜2.5.0” 。
步骤1)删除节点模块。
第2步)在package.json文件中,在dependecies对象中写入“ core-js”:“〜2.5.0”。
第3步)npm install
然后它将完全正常工作
答案 6 :(得分:1)
我通过在import 'core-js/proposals/reflect-metadata';
文件中添加以下导入内容polyfills.ts
来修复了该问题
/** 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更新,并且一切正常。
答案 7 :(得分:0)
我找到了可能的答案。您有core-js版本3.0,此版本没有用于ES6和ES7的单独文件夹;这就是应用程序找不到正确路径的原因。
要解决此错误,您可以将core-js版本降级为2.5.7。此版本可生成正确的目录结构,并带有单独的ES6和ES7文件夹。
要降级版本,只需运行:
npm i -S core-js@2.5.7
答案 8 :(得分:0)
就我而言,我只是换了->
导入'core-js / es6 / reflect'; 导入'core-js / es7 / reflect';
到
导入'core-js / es / reflect'; 导入'core-js / es / reflect';
成功了。
答案 9 :(得分:0)
删除路径中“ es”末尾的数字,例如“ core-js / es / reflect”,也对我有用。
答案 10 :(得分:0)
对于Angular 7
从 package.json 删除:
"core-js": "3.6.5",
因为它是Angular软件包的一部分。
答案 11 :(得分:0)
我通过删除路径中“es”末尾的数字来解决这个问题,以响应Module not found: Error: Can't resolve 'core-js/es7/reflect