バージョン問題ローディングrxjsは、私が「プロジェクト(それはtypescriptですで書かれています)を持っているSystemJs
npm: 3.10.9
systemjs: 0.19.41
typescript: 1.8.10
rxjs: 5.0.3
背景
をバンドル追加しようとしていますrxjs
と同じですが、バンドルされたファイルをsystemjs
まで読み込む際に問題が発生しました。
System.config({
transpiler: 'typescript',
paths: {
'src:*': '/src/*',
'npm:*': '/node_modules/*'
},
map: {
'lib': 'src:lib',
'rxjs': 'npm:rxjs/bundles/Rx.js',
'typescript': 'npm:typescript/lib/typescript.js',
'systemjs': 'npm:systemjs/dist/system.src.js'
},
packages: {
lib: {
defaultExtension: 'js'
}
}
});
をconfigコン
SystemJs問題
上記の設定を使用して、私は次のエラーを取得します。 amd
形式に間違ってデフォルトをsystemjs事実、実行されることは決してありませんRx.js
のライン245上のexporter
機能によって引き起こされる
Error: (SystemJS) undefined is not a constructor (evaluating '__extends(UnsubscriptionError, _super)')
。
モジュール形式が設定されていない場合にはモジュール形式の検出
、自動正規表現ベースの検出を使用した:systemjsドキュメントから
。このモジュール形式の検出は決して完全ではありませんが、大半のユースケースでうまく対応しています。
未遂ソリューション
私は明示的に設定してglobal
にrxjs
パッケージ形式を設定すると、この問題を解決するだろうと推測。これが最初の問題を修正しますが
System.config({
transpiler: 'typescript',
paths: {
'src:*': '/src/*',
'npm:*': '/node_modules/*'
},
map: {
'lib': 'src:lib',
'rxjs': 'npm:rxjs/bundles/Rx.js',
'typescript': 'npm:typescript/lib/typescript.js',
'systemjs': 'npm:systemjs/dist/system.src.js'
},
packages: {
lib: {
defaultExtension: 'js'
},
rxjs: {
format: 'global'
}
}
});
問題2
は、それが第二を作成しました。 undefined
のように、私がどこでもrxjs
のインポートを使用しようとすると、エラーが発生します。コンソールのtranspiledコードがwindow.Rx
が正しくRx
オブジェクトに設定されますが、SomeClass
に設定されますrxjs_1_1
オブジェクトは、グローバルRx
オブジェクトではなく、別のことが明らかになったデバッグ
import {Observable} from 'rxjs'
export class SomeClass {
...
private _isObservable(arg: any): boolean {
return arg instanceof Observable;
}
}
Uncaught TypeError: Right-hand side of 'instanceof' is not an object at SomeClass._isObservable
オブジェクトにはRx
グローバルセットがプロパティ 'Rx'として設定されています。
したがってrxjs_1.Rx.Observable
は動作しますが、rxjs_1.Observable`では動作しません。
(function(System, SystemJS) {System.register(['rxjs'], function(exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var rxjs_1;
var SomeClass;
return {
setters:[
function (rxjs_1_1) {
rxjs_1 = rxjs_1_1;
}],
execute: function() {
SomeClass = (function() {
function SomeClass() {
}
...
SomeClass.prototype._isObservable = function (arg) {
return arg instanceof rxjs_1.Observable;
};
return SomeClass;
}());
exports_1("SomeClass", SomeClass);
}
}
});
質問
私はそれが代わりにRx
オブジェクトを渡すために取得する方法任意のアイデア?