簡體   English   中英

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

[英]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 上收到以下錯誤:

在此處輸入圖片說明

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

您應該安裝包含此文件/模塊的core-js@2.5.x 請參閱預設環境文檔

如果您想使用 3.0 版,您可以將路徑添加到您的tsconfig.json文件中。

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

注意:您需要檢查node_modules/core-js/proposals/reflect-metadata相對路徑,並在您的項目結構中根據需要進行更正。

對於 Angular 8( 來源):

Angular CLI 8.0+ 直接管理所需的 Angular polyfill,項目不需要直接依賴於 core-js(假設應用程序不手動包含額外的 core-js polyfill)。

我已經解決了:

  • 從我的package.json依賴項中刪除core-js
  • 刪除import 'core-js/es7/reflect'; 從我的test.ts

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";

就我而言,我只是改變了-->

import 'core-js/es6/reflect';
import 'core-js/es7/reflect';

import 'core-js/es/reflect';

它起作用了..

來自@medeni的 tsconfig.json 解決方案有效,但在自己檢查之前不要復制路徑。 對我來說,它必須是:

"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

刪除路徑中'es'末尾的數字,例如'core-js/es/reflect'也對我有用。

對於 EX: import 'core-js/es7/reflect'; 改為import 'core-js/es/reflect';

我通過添加這個導入來修復它: 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 更新並且一切正常。

對於 angular 最新版本(當前 -> 9),

兼容的 core-js 版本是"core-js": "~2.5.0"

步驟 1) 刪除節點模塊。

步驟 2) 在 package.json 文件中,在依賴對象中寫入 "core-js": "~2.5.0"。

步驟 3) npm 安裝

那么它會工作得很好

我找到了可能的答案。 你有 core-js 3.0 版本,這個版本沒有 ES6 和 ES7 的單獨文件夾; 這就是應用程序找不到正確路徑的原因。

要解決此錯誤,您可以將 core-js 版本降級到 2.5.7。 此版本生成正確的目錄結構,具有單獨的 ES6 和 ES7 文件夾。

要降級版本,只需運行:

npm i -S core-js@2.5.7

對於 Angular 7

package.json 中刪除:

"core-js": "3.6.5",

因為它是 Angular 包的一部分。

我通過刪除路徑中“es”末尾的數字解決了這個問題,作為對找不到模塊的回應:錯誤:無法解析 'core-js/es7/reflect

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM