【发布时间】:2016-10-12 06:34:50
【问题描述】:
我目前正在更新使用 Angular2 npm 包和 RxJs 的项目的依赖项。我正在更新到 Angular 的 2.0.2 稳定版本,它取决于 Rx5 beta.12。 对于我的 Web 应用程序,我只部署 Rx.min.js 包并在我的 index.html 文件中使用脚本标记加载它。这种方法之前在 Rx umd 包中非常有效,但同时会导致错误,因为在我看来,RxJs 的贡献者为了一个通用的包文件而放弃了不同的包版本。即 Rx.js 而不是 Rx.umd.js 等等。
我正在使用 SystemJs 模块加载器,如果我不执行其他步骤,这些错误将出现在 RxJs 框架的任何符号上:
GET http://localhost:8080/rxjs/Subject.js 404 (Not Found)
我认识到 Rx 现在是全局定义的 (window.Rx) 并包含所有必要的东西。所以我尝试通过像这样手动在 SystemJs 中定义这些符号:
function defineGlobalModule( parentModuleName, simpleName, moduleValue ) {
var fqModuleName = parentModuleName + simpleName;
System.amdDefine( fqModuleName, ["require", "exports"], function (require, exports) {
"use strict";
exports[ simpleName ] = moduleValue;
});
if( typeof moduleValue === "object" )
for( var key in moduleValue )
defineGlobalModule( fqModuleName + "/", key, moduleValue[ key ] )
}
defineGlobalModule( "", "rxjs", global.Rx );
这使得“rxjs/Subject”样式导入再次起作用。但是现在我遇到了很多这样的错误:
GET http://localhost:8080/rxjs/operator/toPromise.js 404 (Not Found)
GET http://localhost:8080/rxjs/observable/fromPromise.js 404 (Not Found)
例如,这些文件由 angular forms.umd.js 包导入。
在不部署 node_module 本身的情况下导入 Rx.js bundle 时,Angular2 2.0.x 的最新技术是什么。我需要捆绑版本!我使用的是 Rx.js 包的 umd 版本,之前它似乎不存在了。
【问题讨论】:
-
如果我在你的鞋子里,我会为你的应用程序使用 angular-cli。它将捆绑您的应用程序,您可以花时间制作应用程序而不是修复库导入问题。
标签: angular rxjs systemjs rxjs5