I am currently updating the dependencies of my project which uses the Angular2 npm packages and therefore RxJs as well. I am updating to the 2.0.2 stable release of angular which depends on Rx5 beta.12. For my web application i only deploy the Rx.min.js bundle and load it with a script tag in my index.html file. That approach worked perfectly before with the Rx umd bundle, but causes errors meanwhile, since it appears to me that the contributors of RxJs dropped the different bundle versions for the sake of one common bundle file. i.e. Rx.js instead of Rx.umd.js and so on.
I am using SystemJs module loader and if i do no additional steps these errors will occur with any symbol of the RxJs Framework:
GET http://localhost:8080/rxjs/Subject.js 404 (Not Found)
I recognized that Rx is now globally defined (window.Rx) and contains all the necessary stuff. So i tried to define those symbols in SystemJs manually by doing smth like this:
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 );
That made the 'rxjs/Subject' style imports work again. But now i get lots of errors like this:
GET http://localhost:8080/rxjs/operator/toPromise.js 404 (Not Found)
GET http://localhost:8080/rxjs/observable/fromPromise.js 404 (Not Found)
These files are imported by the angular forms.umd.js bundle for example.
What is the state of the art for Angular2 2.0.x when it comes to importing the Rx.js bundle without deploying the node_module itself. I need the bundled version! I was using the umd version of the Rx.js bundle before which seems not to exist anymore.
I did maybe exactly what you're looking for with
Angular2
andrxjs@5.0.0-beta.12
which is now distributed asglobals
and theumd
package is probably not supported any more (just as you said):See live demo: https://plnkr.co/edit/z4gg2XBoQDgYXev0Csuq
Basically, I just updated my SystemJS config:
Then I removed
rxjs
frommap
list. Now it loads a singleRx.js
file.This worked for me, loading via
rxjs*
caused issue once I started to use other bits ofAngular2
such asrouting
.This issue is discussed in detail here and the solution is to use your own loader such as (code credit nros)
Apparently, it's going to be fixed in a future release I suspect this is being held back as rxjs is still in beta.
rxjsLoader.js
systemjs-config-using-custom-rx-loader.js