官方角度4点有一个持续的问题,因为它加载未绑定的RxJS,并且经常会阻塞对unpkg.com的请求。
SystemJS配置可以修改为在捆绑的角度模块中使用捆绑的RxJS吗?
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 ()
因为角绑定模块包含以下导入:
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';发布于 2017-08-22 13:29:29
一个简单的方法是从rxjs中删除map并将其作为rxjs*添加到path中(我认为这里需要使用绝对路径):
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我发现的更容易的方法是创建一个新文件来填充丢失的导出(请参见下面的推荐):
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:
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进行演示
https://stackoverflow.com/questions/45818430
复制相似问题