错误:无法解析“ \ node_modules \ @ angular-devkit \ build-angular \ src \ angular-cli-files \ models中的“ core-js / es7 / reflect”

时间:2019-03-28 13:32:54

标签: angular serve

更新到Angular 7.3.6后,在ng serve上出现以下错误:

enter image description here

  

错误   ./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"
  }
}

12 个答案:

答案 0 :(得分:31)

您应该安装包含此文件/模块的core-js@2.5.x。参见preset-env docs

答案 1 :(得分:16)

对于Angular 8(source):

  

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版有一些重大更改:

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

您应该在其中一个文件中找到与以下内容类似的行: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