返回Rx.Observable的Lib函数不会继承新的运算符

时间:2017-11-28 16:30:51

标签: javascript webpack rxjs

我正在开发一个以RxJS作为对等依赖项的lib,我正在使用webpack捆绑它。我通过设置externals: [require("webpack-rxjs-externals")()]来配置webpack以从包中排除RxJS。

在那个lib中,我有一个返回Observable的函数。类似的东西:

import { from } from 'rxjs/observable/from'
import { map, distinctUntilChanged } from 'rxjs/operators'

export default function xpto(predicate) {
  return from(this).pipe(
    map(predicate),
    distinctUntilChanged()
  )
}

然后将此函数绑定到一个公开 observable hook 的对象,它按预期工作。

当我将此lib导入另一个项目时出现问题,我还在其中包含RxJS并通过原型修补添加了几个 rx运算符

import 'lib' // the one with xpto function
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/filter'

// this breaks because although xpto returns an Observable
// it somehow wasn't patched with the filter operator
xpto(predicate).filter(whatever).subscribe(etc)

通过修补 Observable原型,我预计xpto返回的 Observable 实例,导入的操作符可以通过原型链访问...但是它没有。

是因为xpto函数如何绑定?它是否与 webpack 捆绑这个有关?我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

似乎至少有两个Observable个实例。一个继承了运算符而另一个没有。

可以通过在应用webpack.config.js添加以下内容来修复此问题,其中包含 lib

resolve: {
    alias: {
        'rxjs/Observable': path.join(__dirname, './node_modules/rxjs/Observable')
    }
}