node_modules/rxjs-compat/operator/shareReplay.d.ts(2,10) 中的错误:错误 TS2305:
Posted
技术标签:
【中文标题】node_modules/rxjs-compat/operator/shareReplay.d.ts(2,10) 中的错误:错误 TS2305:【英文标题】:ERROR in node_modules/rxjs-compat/operator/shareReplay.d.ts(2,10): error TS2305: 【发布时间】:2019-06-26 20:13:33 【问题描述】:我正在尝试将基本的 Angular 骨架应用程序从 Angular 5 升级到 Angular 6,这是我在尝试运行该应用程序时遇到的问题:
ERROR in node_modules/rxjs-compat/operator/shareReplay.d.ts(2,10): error TS2305: Module '"C:/newAdmin/testing-front-end/admin-fe/node_modules/rxjs/internal-compatibility/index"' has no exported member 'ShareReplayConfig'.
这是我的 package.json:
"name": "admin-fe",
"version": "0.0.0",
"scripts":
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
,
"private": true,
"dependencies":
"@angular-devkit/core": "^7.3.0",
"@angular/animations": "^6.1.0",
"@angular/common": "^6.1.0",
"@angular/compiler": "^6.1.0",
"@angular/core": "^6.1.0",
"@angular/forms": "^6.1.0",
"@angular/http": "^6.1.0",
"@angular/platform-browser": "^6.1.0",
"@angular/platform-browser-dynamic": "^6.1.0",
"@angular/router": "^6.1.0",
"@ngrx/store": "^7.2.0",
"angular-oauth2-oidc": "^5.0.2",
"core-js": "^2.5.4",
"moment": "^2.24.0",
"rxjs": "6.3.3",
"rxjs-compat": "^6.4.0",
"zone.js": "~0.8.26"
,
"devDependencies":
"@angular-devkit/build-angular": "~0.7.0",
"@angular/cli": "~6.1.3",
"@angular/compiler-cli": "^6.1.0",
"@angular/language-service": "^6.1.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1",
"typescript": "^2.9.1"
使用 typescript 3.3.1 时我没有收到此错误,但我不能使用它,因为编译器只允许我直到 typescript
我可以在这里采取什么步骤?
编辑:
我将 rxjs 和 rxjs-compat 版本都对齐为 6.3.3,但现在我收到以下错误:
ERROR in node_modules/@ngrx/store/src/store.d.ts(30,31): error TS2304: Cannot find name 'Extract'.
【问题讨论】:
对齐rxjs
和rxjs-compat
的版本。他们不应该不同
【参考方案1】:
我有同样的问题,我不得不降级 rxjs-compat(6.3.3) 以使其与 rxjs(6.3.3) 对齐,
在你的 package.json 中应该是这样的:
"rxjs": "6.3.3",
"rxjs-compat": "6.3.3",
如果您使用的是 rxjs 6.4.0,则不需要使用 rxjs-compat,它提供了 rxjs v6 和 v5 之间的兼容层。
所以我认为你可以直接使用 import shareReplay from 'rxjs/operators';
这里有更多关于运营商的信息:https://www.learnrxjs.io/
【讨论】:
但我在代码中的某些地方有 .do() 调用。将 6.4.0 用于 rxjs 时会运行吗? 你应该可以将它与 Pipebale 运算符一起使用,可以在 rxjs/operators 中访问,使用 pipeable 运算符github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.mdlearnrxjs.io/operators/utility/do.html 被称为点击 我将尝试使用管道操作符并在出现问题时返回 Jack Ryder:对我不起作用,先生再次遇到同样的错误:Uncaught TypeError: Object(...) is not a function?【参考方案2】:我在 package.json 文件中 rxjs 和 rxjs-compat 的版本与 rxjs="6.3.3" 和 rxjs-compat="6.4.0" 不同的项目中遇到了同样的问题 所以我只是通过以下命令降级了 rxjs-compat 版本:
npm install rxjs-compat@6.3.3 --s
它对我有用。
【讨论】:
欢迎兄弟乐于助人【参考方案3】:我遇到了与 "rxjs": "6.3.3","rxjs-compat": "6.4.0"
相同的问题,尽管移至版本 ^6.3.3
,但错误仍然存在。只是一个小小的补充。如果您的rxjs-compat
中有^
,则可能会导致问题。没有插入符号,即rxjs-compat": "6.3.3"
它对我有用。请参阅https://github.com/ReactiveX/rxjs/issues/4512。谢谢
【讨论】:
很高兴它有帮助。【参考方案4】:我遇到了类似的问题。但是,当我在 package.json 中使用以下版本的 rxjs 和 rxjs-compat 时,它就解决了。 --->“rxjs”:“6.3.3”, --->“rxjs-compat”:“6.3.3”
【讨论】:
【参考方案5】:在 package.json 文件中编辑替换 "rxjs-compat": "^6.4.0" => "rxjs-compat": "^6.3.3" 并运行命令
npm install
【讨论】:
欢迎来到 ***。回答时,请添加说明。它极大地提高了对社区的回答的长期价值。问候。【参考方案6】:我正在使用 Angular 6,问题通过删除解决了
import 'rxjs/Rx';
来自我的代码。
【讨论】:
【参考方案7】:npm install rxjs-compat@6.3.3 --s
上面的命令已经解决了我的问题
【讨论】:
【参考方案8】:我通过从 rxjx/Rx 导入 Observable 得到了这个错误 - 从 rxjs 导入它解决了这个问题。
我的版本是
"rxjs": "~6.2.0",
"rxjs-compat": "^6.0.0",
我不需要更改它们,只需更改导入来源
从 'rxjs/Rx' 导入 Observable ;
到
从 'rxjs' 导入 Observable ;
【讨论】:
以上是关于node_modules/rxjs-compat/operator/shareReplay.d.ts(2,10) 中的错误:错误 TS2305:的主要内容,如果未能解决你的问题,请参考以下文章