我無法獲得使用RxJS的最小的Angular 2應用程序。我正在使用Typescript(tsc 1.6.2)和systemjs進行模塊加載。我如何讓systemjs正確加載Rx模塊?我已經用盡了想法嘗試,我會很感激任何指向我做錯的事情。模塊加載對我來說有點神奇。非常令人沮喪。如何使用systemjs在最小的Angular 2應用程序中加載RxJS?
的index.html:
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<script src="../node_modules/es6-shim/es6-shim.js"></script>
<script src="../node_modules/systemjs/dist/system.src.js"></script>
<script src="../node_modules/rx/dist/rx.lite.js"></script>
<script src="../node_modules/angular2/bundles/angular2.dev.js"></script>
</head>
<body>
<app>App loading...</app>
<script>
System.config({
packages: { 'app': { defaultExtension: 'js' } }
});
System.import('app/app');
</script>
</body>
</html>
app.ts:
/// <reference path="../../node_modules/rx/ts/rx.all.d.ts" />
import { bootstrap, Component, View } from 'angular2/angular2';
import * as Rx from 'rx';
@Component({
selector: 'app'
})
@View({
template: `Rx Test`
})
export class App {
subject: Rx.Subject<any> = new Rx.Subject<any>();
}
bootstrap(App);
SystemJS嘗試加載不存在的文件:
只要我在上面的代碼中註釋掉主題,一切都會正常運行,因爲不會嘗試加載不存在的文件(並且沒有加載rx)。
埃裏克,感謝您抽出時間回覆!這解決了我的一部分神祕。對不起,花了這麼長時間回到你身邊,我花了大部分時間試圖讓同一個項目脫機工作(沒有任何真正的成功,我必須說)。我使用的VSC和打字稿1.6.2,就是在你的例子中使用的相同transpiler。在「在線」版從** ** app.ts生成的代碼有一個稍微不同的頭,這似乎使所有的差異(它調用'System.register(...)')。你有過任何成功編譯並與VSC/TSC本地運行呢? – Toby
您是否收到任何錯誤?事實上,在我的離線版本(我自己的項目)中,我有'import *'作爲'...'的主題(與我的答案有點不同)。還有其他的東西嗎?你的在線和離線版本有什麼不同? ? –
所以你在運行時遇到了錯誤呢?或者它在默默地失敗了嗎?你是否使用了一些工具,比如JSPM,Webpack或者其他東西?你能創建一個repo,以便我可以克隆它並查看它嗎? –