首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捆绑RxJS在角4 SystemJS凸起

捆绑RxJS在角4 SystemJS凸起
EN

Stack Overflow用户
提问于 2017-08-22 13:02:03
回答 1查看 1.2K关注 0票数 2

官方角度4点有一个持续的问题,因为它加载未绑定的RxJS,并且经常会阻塞对unpkg.com的请求。

SystemJS配置可以修改为在捆绑的角度模块中使用捆绑的RxJS吗?

代码语言:javascript
复制
  map: {
    ...
    'rxjs': 'npm:rxjs/bundles/Rx.js'
  },
  packages: {
    ...
    rxjs: {
      defaultExtension: 'js'
    }
  }

不能正常工作,导致404个错误:

unpkg.com/rxjs@5.4.3/bundles/Rx.js/operator/share.js:1 获取https://unpkg.com/rxjs@5.4.3/bundles/Rx.js/operator/share.js 404 ()

因为角绑定模块包含以下导入:

代码语言:javascript
复制
import {Observable} from 'rxjs/Observable';
import {of } from 'rxjs/observable/of';
import {concatMap} from 'rxjs/operator/concatMap';
import {filter} from 'rxjs/operator/filter';
import {map} from 'rxjs/operator/map';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-22 13:29:29

一个简单的方法是从rxjs中删除map并将其作为rxjs*添加到path中(我认为这里需要使用绝对路径):

代码语言:javascript
复制
paths: {
  'rxjs*': 'https://unpkg.com/rxjs@5.4.3/bundles/Rx.min.js'
},

但是,这只适用于SystemJS 0.19.*,因为从0.20开始就不再支持通配符*,请参阅:https://github.com/systemjs/systemjs/issues/1039

For Angular2:我不知道SystemJS 0.20是否有推荐的方法,但是在RxJS GitHub页面上已经讨论过了,这样您就可以阅读整个线程https://github.com/ReactiveX/rxjs/issues/2458了。特别是从我的评论https://github.com/ReactiveX/rxjs/issues/2458#issuecomment-286706048和另一条评论中,我创建了一个定制的and,它非常简单,并且与SystemJS 0.20以及https://github.com/ReactiveX/rxjs/issues/2458#issuecomment-287193937一起工作。

编辑:,很明显,现在这只适用于Angular2,而不是Angular4:https://plnkr.co/edit/ddRnL2I4ps2U2pdoRo04?p=info

For Angular4我发现的更容易的方法是创建一个新文件来填充丢失的导出(请参见下面的推荐):

代码语言:javascript
复制
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/share';
import 'rxjs/add/observable/merge';

export function merge(...observables: Observable[]) {
  return Observable.merge(observables);
}

export function share(observable: Observable) {
  if (!observable) {
    return;
  }
  return observable.share();
}

然后加载这个文件而不是捆绑的RxJS:

代码语言:javascript
复制
paths: {
  'npm:': 'https://unpkg.com/',
  'rxjs/observable/merge': './src/rxjs-polyfill.ts',
  'rxjs/operator/share': './src/rxjs-polyfill.ts',
  'rxjs*': 'https://unpkg.com/rxjs@5.4.3/bundles/Rx.min.js'
},

使用Angular4:http://plnkr.co/edit/tu561CX0n1I9f53iVv12进行演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45818430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档