【问题标题】:Error: Can't resolve 'core-js/es7/reflect' in '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models错误:无法解析 '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models 中的 'core-js/es7/reflect'
【发布时间】:2019-08-19 07:15:15
【问题描述】:

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

【问题讨论】:

  • 在运行ng serve之前,您是否清理了您的node_modules、节点缓存并尝试了npm install
  • 是的,我做到了,但同样的错误不断出现,我不知道还能做什么。您还有其他建议吗?
  • 你应该安装core-js@2.5.x
  • 是的,它成功了!谢谢
  • 截至 2019 年 7 月 3 日,使用 Angular-CLI 8.0.6 和 Angular 8.1.0,上述错误将不再发生在 NEWLY GENERATED Angular 应用程序上,因为有问题/src/polyfills.ts 中不再生成导入。对于较旧的 Angular 应用程序,我建议通过以下方式生成一个临时 Angular 应用程序: ``` ng new aaTemplate --skip-tests --skip-install ``` 将新生成的 aaTemplate\src\polyfills.ts 与旧应用程序的 polyfill 进行比较。 ts,你会明白我在说什么。

标签: angular serve core-js npm-version


【解决方案1】:

我通过删除路径中“es”末尾的数字来解决问题,以响应Module not found: Error: Can't resolve 'core-js/es7/reflect

【讨论】:

    【解决方案2】:

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

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

    import 'core-js/es/reflect';
    

    它奏效了..

    【讨论】:

      【解决方案3】:

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

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

      要降级版本,只需运行:

      npm i -S core-js@2.5.7
      

      【讨论】:

        【解决方案4】:

        对于 Angular 7

        package.json 移除:

        "core-js": "3.6.5",
        

        因为它是 Angular 包的一部分。

        【讨论】:

          【解决方案5】:

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

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

          步骤 1) 删除节点模块。

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

          步骤 3) npm 安装

          然后它会很好地工作

          【讨论】:

            【解决方案6】:

            删除路径中'es' 末尾的数字,例如'core-js/es/reflect' 也适用于我。

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

            【讨论】:

            • 你能再解释一下吗?
            • 您好 Dieter,问题是您在错误的文件夹中寻找“反射”模块。 1-在您的 src 文件夹中打开“polyfills.ts”。 2 - 找到像“import 'core-js/es7/reflect';”这样的行。对我来说这里是 7,在你的情况下它可以是别的东西。 3-像这样删除7:“import'core-js/es/reflect';”它应该可以工作。
            【解决方案7】:

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

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

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

            【讨论】:

            • 您好,我在 gh erro 报告中也看到了这一点,但未能成功,只是找到了相同的模块未找到:错误:无法解析 'core-js/es7/反映'错误....你的工作吗?
            • 对我来说是这样的:“paths”:{“core-js/es7/reflect”:[“../node_modules/core-js/proposals/reflect-metadata”],“core- js/es6/*": ["../node_modules/core-js/es/*"] },
            • Ran ncu 将我所有的包更新到最新版本,然后使用上述内容,它对我有用。
            • 我必须添加“baseUrl”:“。”让它工作。谢谢 mrapi amd Medeni baykal
            【解决方案8】:

            对于 Angular 8 (source):

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

            我已经解决了:

            • 从我的 package.json 依赖项中删除 core-js
            • 从我的test.ts 中删除import 'core-js/es7/reflect';

            【讨论】:

            • 对于类似的问题,这可行,但我需要从我的polyfills.ts 中删除对core-js/es{6,7}/reflect 的引用
            【解决方案9】:

            我通过在我的polyfills.ts 文件中添加此导入:import 'core-js/proposals/reflect-metadata'; 来修复它

            /** 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 更新并且一切正常。

            【讨论】:

              【解决方案10】:

              @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

              【讨论】:

                【解决方案11】:

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

                【讨论】:

                • 这对我来说非常有效 - 升级到 Angular 8 后开始出现错误,但您的解决方案有效。
                • 在所有答案中,这对我(Angular 11)来说是解决方案。谢谢你,@Joffrey
                【解决方案12】:

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

                【讨论】:

                • npm install --save core-js@^2.5.0,为我工作,谢谢
                • 也适合我!!
                • 我将 package.json 中的版本降低为“core-js”:“^2.5.4”,然后运行 ​​yarn,这对我有用。
                • 工作!谢谢
                • 确认 npm install --save core-js@^2.5.0 对我也有效
                猜你喜欢
                • 2019-09-09
                • 1970-01-01
                • 2021-02-28
                • 2020-01-23
                • 2021-08-07
                • 2018-05-03
                • 2020-04-16
                • 2021-05-24
                • 1970-01-01
                相关资源
                最近更新 更多