Ошибка: не удается разрешить 'core-js/es7/refle' в '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models

После обновления до 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/refle' в '\node_modules @угловая DevKit\встроенной углового\SRC\угловато-CLI файлы\модель'

Вот мои зависимости 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"
  }
}

Ответ 2

Если вы хотите использовать версию 3.0, вы можете добавить путь к файлу tsconfig.json.

{
    "compilerOptions": {
        ...
        "paths": {
            "core-js/es7/reflect": [
                "node_modules/core-js/proposals/reflect-metadata"
            ]
        }
    }
}

Ответ 4

Для Angular 8 (источник):

Angular CLI 8. 0+ управляет необходимыми угловыми полизаполнениями напрямую, и проекты не будут нуждаться в прямой зависимости от core-js (при условии, что приложение вручную не включает дополнительные полизаполнения core-js).

Я решил:

  • удаление core-js из моих package.json зависимостей
  • удалить import 'core-js/es7/reflect'; из моего test.ts

Ответ 5

Решение tsconfig.json из @medeni работает, но не копируйте путь, прежде чем проверять его самостоятельно. Для меня это должно было быть:

"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

Ответ 6

Я исправил это, добавив этот импорт: 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

Я нашел возможный ответ. У вас есть core-js версии 3.0, и в этой версии нет отдельных папок для ES6 и ES7; Вот почему приложение не может найти правильные пути.

Чтобы устранить эту ошибку, вы можете понизить версию core-js до 2.5.7. Эта версия создает правильную структуру каталогов с отдельными папками ES6 и ES7.

Чтобы понизить версию, просто запустите:

npm я -S [email protected]

Ответ 8

В моем случае я просто изменился ->

импорт 'core-js/es6/refle'; импорт 'core-js/es7/refle';

в

импорт 'core-js/es/refle'; импорт 'core-js/es/refle';

и это сработало..