Angular2,systemjs,无法使用Rx.umd.js
使用最新版本的Angular RC4,Rxjs可用于node_modules或npmcdn.com目录.
成功的plunker但不使用.umd.js http://plnkr.co/edit/B33LOW?f=systemjs.config.js&p=preview 这是下载单个文件的网络选项卡截图. 当然,这个设置会使很多单独的RxJS文件下载,因为它正在单独读取文件,而不是.umd.js 但是,与其他AngularJS文件一样,当我尝试使用单个umd.js文件时,会发生以下错误. GET https://npmcdn.com/rxjs@5.0.0-beta.6/bundles/Subject 404 () GET https://npmcdn.com/rxjs@5.0.0-beta.6/bundles/Observable 404 () GET https://npmcdn.com/rxjs@5.0.0-beta.6/bundles/observable/PromiSEObservable 404 () ... 尝试使用.umd.js和system.config.js失败的plunker http://plnkr.co/edit/rVUNyz?p=preview&f=systemjs.config.js systemjs.config.js var map = { 'app': 'app','@angular': 'https://npmcdn.com/@angular',// sufficient if we didn't pin the version '@angular/router': 'https://npmcdn.com/@angular/router' + routerVer,'@angular/forms': 'https://npmcdn.com/@angular/forms' + formsVer,'@angular/router-deprecated': 'https://npmcdn.com/@angular/router-deprecated' + routerDeprecatedVer,'angular2-in-memory-web-api': 'https://npmcdn.com/angular2-in-memory-web-api',// get latest 'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6/bundles','ts': 'https://npmcdn.com/plugin-typescript@4.0.10/lib/plugin.js','typescript': 'https://npmcdn.com/typescript@1.9.0-dev.20160409/lib/typescript.js',}; //packages tells the System loader how to load when no filename and/or no extension var packages = { 'app': { main: 'main.ts',defaultExtension: 'ts' },'rxjs': { main: 'Rx.umd.js',defaultExtension: 'js' },'angular2-in-memory-web-api': { main: 'index.js',}; 似乎’rxjs’根本没有使用’package’部分. 只有使这个plunker工作,我必须将地图部分更改为以下没有捆绑 'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6', 我的问题是’有没有办法在Angular2应用程序中使用Rx.umd.js?’ 解决方法
我查看了Rx.umd.js文件,似乎整个包使用了相对路径导入.这意味着当rxjs包的基础(在地图中)具有/ bundle后缀时,它无法找到文件.
这是有道理的,因为你使用的是实际的rxjs包而不是它的’/ bundles’目录. 因此,您所要做的就是: >在systemjs.config.js的map部分中更改 'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6/bundles', 至 'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6', >在包部分,更改 'rxjs': { main: 'Rx.umd.js', 至 'rxjs': { main: 'bundles/Rx.umd.js', 或者简单地说,/ bundles应该是pacakge定义的一部分而不是映射,因为映射应该指向包的根. 这是一个更新的(工作!)plunker需要进行小的更改:http://plnkr.co/edit/3P6tLYMYOC24zc6JCkgO?f=systemjs.config.js&p=preview —编辑(关注@allenhwkim评论)— 我进一步研究了它.请注意,systemjs.config.js遵循包(而不是map)部分中的bundle / xxx.参见例如第59行. 我的猜测是angular有自己对rxjs的引用,它正确定义了包,所以看起来你的包定义被忽略了. 为了证明包是相关的和使用的,我在(在plnkr中)添加了一个名为rxjs1的虚拟包,我尝试在inedex.html文件中导入它.现在运行plnkr并看到它已导入.尝试将包定义更改为不存在的内容,例如Rxx.umd.js,您将收到错误消息.使用时看起来def包是相关的 System.import('package-name'); 并不是 import { someClass } from 'package-name'; 请注意,当您使用plnkr时,plnkr并不总是会跟踪对包定义的更改,您需要刷新页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Memcached source code analysis -- Analysis of change of
- Gitlab泊坞窗和external_url
- playframework – 玩2 – Scala FakeRequest withJsonBody
- Angular 5.0 学习2:Angular 5.0 开发环境的搭建和新建第一
- bash – Unix find -exec:为什么以下行为有所不同?
- angular – 如何替换@viewChildren中用于测试double的组件?
- WebService
- 用于切换colorschemes的vim函数
- 如何处理AngularJS指令中的Highcharts事件?
- 编写一个完整的Angular4 FormText 组件