我正在开发一个以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 捆绑这个有关?我在这里缺少什么?
答案 0 :(得分:0)
似乎至少有两个Observable
个实例。一个继承了运算符而另一个没有。
可以通过在应用的webpack.config.js
添加以下内容来修复此问题,其中包含 lib :
resolve: {
alias: {
'rxjs/Observable': path.join(__dirname, './node_modules/rxjs/Observable')
}
}