错误:无法解析 '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models 中的 'core-js/es7/re
Posted
技术标签:
【中文标题】错误:无法解析 \'\\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错误:无法解析 '\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,你会明白我在说什么。
【参考方案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/*"] , Ranncu
将我所有的包更新到最新版本,然后使用上述内容,它对我有用。
我必须添加“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/es6,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 对我也有效以上是关于错误:无法解析 '\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models 中的 'core-js/es7/re的主要内容,如果未能解决你的问题,请参考以下文章
无法解析配置 ':classpath' 的所有工件。无法解析 com.android.tools.build:gradle:3.5.3。显示错误