2016-04-26 48 views
1

通過在tsconfig.json中指定outFile:「/ app/mybundle.js」屬性,我可以將所有打字稿文件連接成一個包。Angular2 TypeScript Bundle問題 - 組件未加載/初始化

在創建這個包之前,我使用了下面的Systemjs代碼來導入我的角度組件並初始化應用,這很好。

<script> 
     System.config({ 
      packages: { 'app': { defaultExtension: 'js' } }, 
     }); 
     System.import('app/myappp') 
      .then(null, console.error.bind(console)); 
    </script> 

但是,當我創建這個包和更新我的Systemjs代碼如下:

<script> 
     System.config({ 
      packages: { 'app': { defaultExtension: 'js' } }, 
     }); 
     System.import('/app/mybundle') 
      .then(null, console.error.bind(console)); 
    </script> 

所有我在我的屏幕上看到的只是加載,該組件不加載/初始化。雖然我在日誌或404文件夾中看不到任何錯誤。

回答

0

實際上,當使用outFile屬性時,模塊不再是匿名模塊。它們是按名稱註冊的,因此您不需要配置SystemJS以將模塊名稱映射到相應的文件,即對packages塊執行的操作。

沒有outFile屬性,在模塊文件:

System.register([ 'dep', ..., function... 

隨着outFile屬性,在模塊文件:

System.register('modulename', [ 'dep', ..., function... 

有一個第一串參數添加對應於該模塊的名稱在第二種情況下。

只是這樣做:

<script> 
    System.import('mybundle') 
     .then(null, console.error.bind(console)); 
</script> 

注意,app水平不模塊名稱已經不復存在。

+0

仍然沒有成功,除非我添加System.import('mybundle.js'),我在日誌中看到404。當我添加.js擴展時,404錯誤消失了,但組件仍未加載。我有在索引文件 –

+0

中加載...實際上,您只需將'mybundle.js'文件添加到'script'元素並通過其名稱導入主模塊。在你的情況:'System.import('myappp') .then(null,console.error.bind(console));'。這個導入可以添加到主體的末尾...... –

+0

感謝您的快速回復,我添加了腳本文件,之後添加了System.import('myappp').then(null,console.error.bind (安慰));但是當我在瀏覽器中刷新它在根目錄下查找名稱爲myappp的文件時,我不知道爲什麼? –