仅在CircleCI上构建时,Observable.fromPromise不存在
任何人都可以帮我解决这个问题。下面的代码片段在NodeJS Typescript环境中运行,这可以在多个平台上的多台机器上正常工作,但无法在CircleCI上构建以下内容:
错误TS2339:类型'typeof Observable'上不存在属性'fromPromise'。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/frompromise';
import 'rxjs/add/operator/do';
return Observable.fromPromise(col.insertOne(document))
CircleCI环境中有什么不同导致这个和什么是解决方案?
回答如下:使用RxJS 5.5+,Observable
原型不包含任何静态方法。因此,您需要采用两种方法之一来包含fromPromise
(和其他)静态方法。
RxJS v5.5.2是Angular 5的默认依赖版本。
方法1(首选方案)
要使用fromPromise
方法,请从rxjs/observable
独立导入。
import { fromPromise } from 'rxjs/observable/fromPromise';
let observable = fromPromise(promise);
这种方法有利于减少束大小,因为它只会通过修补Observable
原型来导入所需的内容。
方法2(未经优化的方法)
要像以前一样使用静态Observable.fromPromise
,您需要从rxjs/Rx
导入Observable。
import Rx from 'rxjs/Rx';
此方法将导入整个核心功能集,从而导致更大的捆绑包大小。