当使用angular 6和swagger codegen时,我得到与rxjs
相关的typescript编译器错误:
Cannot find module 'rxjs-compat/Observable'
我找到了以下https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#rxjs-v5x-to-v6-update-guide
我在mac上使用swagger-codegen: stable 2.3.1
(与brew一起安装)。
我感谢任何指导。
更新-----------------------
我使用了将rxjs-compat
添加到我的angular6项目中
npm install --save-dev rxjs-compat
我现在得到编译器警告,但编译器错误消失了,项目似乎运行
如果要从以前的角度版本进行迁移,请按照以下指南操作:
rxjs-compat
包与以前的rxjs
实现兼容。例如:
import { concat } from 'rxjs/observable/concat'
但是,应将其更新为版本6附带的新实现。例如:
import { catchError, map, switchMap } from 'rxjs/operators';
那就是说。您还必须使用pipe
更改可观察运算符的实现。例如:
this.sampleService
.search(
payload.firstName,
payload.lastName,
payload.dateOfBirth
)
.pipe(
map(response => new sampleActions.SearchSuccess(response.json())),
catchError(error => of(new sampleActions.SearchFail(error)))
)
如您所见,运算符map
和catchError
使用pipe
运算符具有不同的实现。
也许您可以共享日志的副本,因此更容易理解导致错误/警告的原因。
我遇到了同样的问题。
即使用2.4替换swagger发生器也没有解决问题,我发现的解决方法是将rxjscompat添加到项目中:npm install rxjs-compat@6
查看有关讨论的更多详细信息:https://github.com/swagger-api/swagger-codegen/issues/8179#issuecomment-402575414