84

更新到 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"
  }
}
4

12 回答 12

106

您应该安装core-js@2.5.x包含此文件/模块的文件。请参阅预设环境文档

于 2019-03-28T14:01:00.560 回答
35

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

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

注意:您需要检查node_modules/core-js/proposals/reflect-metadata相对路径并在项目结构中根据需要进行更正。

于 2019-04-05T20:53:04.980 回答
30

对于 Angular 8(来源):

Angular CLI 8.0+ 直接管理所需的 Angular polyfill,项目不需要直接依赖 core-js(假设应用程序没有手动包含额外的 core-js polyfill)。

我已经解决了:

  • core-js从我的package.json依赖项中删除
  • import 'core-js/es7/reflect';我的test.ts
于 2019-07-30T11:11:31.327 回答
28

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

于 2019-03-28T16:00:51.560 回答
18

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

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

import 'core-js/es/reflect';

它奏效了..

于 2019-09-04T07:19:11.417 回答
5

'es'删除路径末尾的数字,就像'core-js/es/reflect'对我一样。

对于 EX:import 'core-js/es7/reflect';已更改为import 'core-js/es/reflect';

于 2019-11-06T16:13:28.843 回答
4

@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

于 2019-07-08T13:53:16.387 回答
4

我通过添加这个导入来修复它: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 更新,并且一切正常。

于 2019-07-25T23:31:20.780 回答
3

对于 Angular 最新版本(当前 -> 9),

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

步骤 1) 删除节点模块。

步骤 2) 在 package.json 文件中,在依赖对象中写入 "core-js": "~2.5.0"。

步骤 3) npm 安装

那么它会工作得很好

于 2020-05-06T06:52:08.687 回答
1

我找到了可能的答案。你有 core-js 版本 3.0,这个版本没有单独的 ES6 和 ES7 文件夹;这就是应用程序找不到正确路径的原因。

要解决此错误,您可以将 core-js 版本降级到 2.5.7。此版本生成正确的目录结构,具有单独的 ES6 和 ES7 文件夹。

要降级版本,只需运行:

npm i -S core-js@2.5.7
于 2019-05-14T07:58:48.220 回答
1

我通过删除路径中“es”末尾的数字来解决问题,以响应未找到模块:错误:无法解析'core-js/es7/reflect

于 2021-01-05T11:14:42.487 回答
0

对于角 7

package.json中移除:

"core-js": "3.6.5",

因为它是 Angular 包的一部分。

于 2020-05-19T08:51:35.430 回答