仅在CircleCI上构建时,Observable.fromPromise不存在

问题描述 投票:1回答:2

任何人都可以帮我解决这个问题。下面的代码片段在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环境中有什么不同导致这个和什么是解决方案?

node.js typescript rxjs observable circleci
2个回答
2
投票

使用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';

此方法将导入整个核心功能集,从而导致更大的捆绑包大小。


1
投票

好吧,一定不是我的日子。问题是进口声明中的资本'P'。

import 'rxjs/add/observable/fromPromise';

在没有大小写不敏感的文件系统的平台上这没问题,所以我没有在Mac OS / X上注意到它,也没有在Windows上注意到它。但是CircleCI使用Linux。

© www.soinside.com 2019 - 2024. All rights reserved.