我收到了 50 个错误,都说 angular/core/core 没有导出成员“eeFactoryDef”。
它们来自不同的 node_modules,例如 angular/cdk、ng-bootstrap、ngx-pipes、ng2-dragula 等等。我也没有从谷歌找到任何东西。
../node_modules/@angular/cdk/drag-drop/typings/directives/drag-handle.d.ts:23:33 - error TS2694: Namespace '"/Users/heikopiirme/Documents/realNewClient/client/node_modules/@angular/core/core"' has no exported member '??FactoryDef'.
23 static ngFactoryDef: ?ngcc0.??FactoryDef<CdkDragHandle>;
Run Code Online (Sandbox Code Playgroud)
这是我的 package.json 文件:
这是我的依赖:
"@angular-skyhook/core": "^1.1.1",
"@angular-skyhook/multi-backend": "^1.1.1",
"@angular/animations": "^8.2.6",
"@angular/cdk": "^8.2.0",
"@angular/common": "^8.2.6",
"@angular/compiler": "^8.2.6",
"@angular/core": "^8.2.6",
"@angular/forms": "^8.2.6",
"@angular/http": "^7.1.4",
"@angular/material": "^8.2.0",
"@angular/platform-browser": "^8.2.6",
"@angular/platform-browser-dynamic": "^8.2.6",
"@angular/router": "^8.2.6",
"@ng-bootstrap/ng-bootstrap": "^5.1.1",
"@ng-select/ng-select": "^3.0.7",
"@swimlane/ngx-datatable": "^13.1.0",
"@types/googlemaps": "^3.36.5",
"angular2-draggable": "^2.3.1",
"bootstrap": "^4.2.1",
"core-js": "^2.6.1",
"drag-drop-webkit-mobile": "^1.4.1",
"exif-js": "^2.3.0",
"hammerjs": "^2.0.8",
"mobile-drag-drop": "^2.3.0-rc.2",
"moment": "^2.24.0",
"moment-range": "^4.0.2",
"net": "^1.0.2",
"ng2-dnd": "^5.0.2",
"ng2-dragula": "^2.1.1",
"ng2-file-upload": "^1.3.0",
"ng2-img-max": "^2.1.18",
"ngx-bar-rating": "^1.1.0",
"ngx-bootstrap": "^4.3.0",
"ngx-material-timepicker": "^5.1.0",
"ngx-permissions": "^5.0.0",
"ngx-pipes": "2.5.6",
"ngx-toastr": "^10.0.4",
"react-dnd-html5-backend": "^7.6.0",
"rxjs": "^6.5.3",
"sockjs-client": "^1.3.0",
"stompjs": "^2.3.3",
"touchscreen-dnd-shim": "^1.2.2",
"underscore": "^1.9.1",
"zone.js": "~0.9.1"
Run Code Online (Sandbox Code Playgroud)
这是我的开发依赖项:
"@angular-devkit/build-angular": "^0.803.4",
"@angular/cli": "~8.3.4",
"@angular/compiler-cli": "^8.2.6",
"@angular/language-service": "^8.2.6",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^8.9.5",
"codelyzer": "~5.0.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.1.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"node-sass": "^4.12.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.5.3"
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因在谷歌上找不到任何信息。
per*_*ion 90
在更新了一些软件包(包括 Angular 从 8 到 9),然后再次降级后,我遇到了这个问题。
解决方案是取消node_modules文件夹,然后进行全新的 npm 安装。
Lia*_*iam 36
很多人说这里的解决方案就是简单地“删除你的node_modules”。这可能有效,也可能无效。
要了解为什么会出现这种情况,您需要了解为什么会出现此错误。这是由Angular 中的重大更改引起的,其中使用角度版本 x 生成的代码与角度版本 y 不兼容(发生在多个版本中,我目前在 10 到 13 之间获取它)。这eeFactoryDef是编译源代码时由 Angular 生成的方法。这种方法的名称多年来一直在变化。因此,删除 node_modules 是有效的,因为它假设您刚刚升级了 Angular,并且旧版本仍然存在。
这也解释了为什么这个问题有这么多不同的答案。角度不兼容可能存在于您的代码或其依赖项之一中。所有说“我在 x 库中得到这个”的人基本上都是因为这个根本问题。
但是,如果您有依赖性问题,您也可能会遇到此问题。诊断此问题的最简单方法是运行npm ls @angular/core. 这将列出链接到该库的所有库依赖项,例如我得到:
`-- UNMET PEER DEPENDENCY @angular/core@13.2.5
npm ERR! peer dep missing: @angular/core@~11.2.13, required by blah@2.1.1
npm ERR! peer dep missing: @angular/core@12.2.15, required by blah@13.0.4
npm ERR! peer dep missing: @angular/core@^11.0.5, required by blah@11.0.5
npm ERR! peer dep missing: @angular/core@^6.0.0 || ^7.0.0 || ^8.0.0, required by ngx-avatar@3.7.0
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要升级冲突的库,以便它们都使用相同(或兼容)版本的 Angular(并且删除和重新添加 node_modules 不会产生任何影响)。
另一个具有此症状的问题是Ivy 编译器。同样,这可能会在库和应用程序之间产生不兼容的构建。这里的解决方案取决于不兼容的位置。如果您的 lib 不是 Ivy,但您的应用程序是,那么您可以选择退出 Ivy(请注意,这在 Angular 12 中现已禁用)
tsconfig.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
],
"angularCompilerOptions": {
"enableIvy": false
}
}
Run Code Online (Sandbox Code Playgroud)
ngcc或者在安装后事件中运行:
包.json
{
"scripts": {
"postinstall": "ngcc"
}
}
Run Code Online (Sandbox Code Playgroud)
rga*_*han 18
除了之前分享的原因/解决方案之外,可能发生这种情况的另一个原因是 npm 包与当前的 Angular 版本不兼容。
例如,我在运行后得到了这些npm i primeng。NPM 安装了最新版本(v12),但我只运行 ng11。
就我而言,解决方案是升级 Angular,但另一个解决方案是降级 npm 包。
小智 12
我遇到了同样的错误。我使用的是 Angular 9.7.1,我首先尝试删除 node_modules 和 npm install 但它没有用,所以我最终修复了它,将它添加到 tsconfig.json:
"compilerOptions":{
[...]
"paths": {
"@angular/*": ["./node_modules/@angular/*"]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32072 次 |
| 最近记录: |