Node.js Observable.fromPromise不仅在CircleCI上构建时存在
谁能帮我弄清楚这件事。下面的代码片段在NodeJS Typescript环境中运行,这在跨多个平台的多台计算机上运行良好,但无法在CircleCI上构建,原因如下: 错误TS2339:类型“typeof Observable”上不存在属性“fromPromise”Node.js Observable.fromPromise不仅在CircleCI上构建时存在,node.js,typescript,rxjs,observable,circleci,Node.js,Typescript,Rxjs,Observable,Circleci,谁能帮我弄清楚这件事。下面的代码片段在NodeJS Typescript环境中运行,这在跨多个平台的多台计算机上运行良好,但无法在CircleCI上构建,原因如下: 错误TS2339:类型“typeof Observable”上不存在属性“fromPromise” import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/frompromise'; import 'rxjs/add/operator/do'
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/frompromise';
import 'rxjs/add/operator/do';
return Observable.fromPromise(col.insertOne(document))
CircleCI环境中有什么不同之处导致了这种情况,解决方案是什么?好的,今天一定不是我的日子。问题是import语句中的大写字母“P”
import 'rxjs/add/observable/fromPromise';
这在带有不区分大小写文件系统的平台上是没有问题的,所以我在Mac OS/X和Windows上都没有注意到。但是CircleCI使用Linux 使用RxJS 5.5+,
可观察的
原型不包括任何静态方法。出于这个原因,您需要采取两种方法之一来包括fromPromise
(和其他)静态方法
RxJS v5.5.2是Angular 5的默认依赖版本
方法1(首选选项) 要使用
fromPromise
方法,请从rxjs/observable
独立导入它
import { fromPromise } from 'rxjs/observable/fromPromise';
let observable = fromPromise(promise);
这种方法有利于减少捆绑包的大小,因为它将通过修补Observable
原型只导入您需要的内容
方法2(未优化方法) 要像以前一样使用static
Observable.fromPromise
,需要从rxjs/Rx
导入Observable
import Rx from 'rxjs/Rx';
此方法将导入整个核心功能集,从而产生更大的捆绑包大小。Thx用于升级!