我正在开发一个具有RxJS
作为同伴依赖性的LIB,我正在使用webpack
捆绑它。我通过设置externals: [require("webpack-rxjs-externals")()]
。
在那个lib中,我有一个可返回可观察到的函数。类似:
import { from } from 'rxjs/observable/from'
import { map, distinctUntilChanged } from 'rxjs/operators'
export default function xpto(predicate) {
return from(this).pipe(
map(predicate),
distinctUntilChanged()
)
}
然后,此函数绑定到公开可观察到的钩子的对象,并且可以按预期工作。
当我将此液体导入另一个项目时,就会发生问题,我还包括RXJ,并添加了几个 rx运算符 prototype prototype patching 他们:P>
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)
通过修补可观察的原型,我希望可观察的实例 xpto
返回,使导入的操作员可以通过原型链访问...但是它没有。
是因为xpto
函数如何绑定?是 webpack 的东西吗?我在这里缺少什么?
似乎至少有两个Observable
实例。一个继承操作员,另一个则没有。
可以通过在包括 app 的webpack.config.js
上添加以下内容来解决这一点:其中包括 lib :
resolve: {
alias: {
'rxjs/Observable': path.join(__dirname, './node_modules/rxjs/Observable')
}
}