2016-08-04 150 views
0

所以我試圖導入一個節點模塊(immutablejs)到我的打字稿文件:導入節點模塊

/// <reference path="../node_modules/immutable/dist/immutable.d.ts" /> 
import { Map } from 'immutable'; 
var myMap = Map(); 

下面是我的index.html我的腳本標籤:

<script src="node_modules/systemjs/dist/system.js"></script> 
<script src="node_modules/typescript/lib/typescript.js"></script> 
<script> 
    System.config({ 
     transpiler: 'typescript', 
     packages: { 
      src: { 
       defaultExtension: 'ts' 
      } 
     } 
    }); 
    System 
    .import('src/main.ts') 
    .then(null, console.error.bind(console)); 
</script> 

雖然智能感知被VS代碼的工作,我的瀏覽器告訴我,它無法找到一成不變: system.src.js:1057 GET http://localhost:3000/immutable/ 404(未找到)

導入SE lf寫的打字稿模塊與相對路徑只是工作很好..

我做錯了什麼?

回答

2

具有正確的類型定義來滿足typescript編譯器不會配置systemjs以知道在哪裏加載用於immutablejs的真實javascript代碼。

當您使用systemjs時,輪到您配置systemjs,以便它知道從哪裏加載庫。如果您不這樣做,它會嘗試將導入的模塊加載爲與您的導入名稱相同的服務器的文件。看到這個答案完全一樣的問題:

How to configure SystemJs for ImmutableJs to work in Angular 2 project

有關如何配置systemjs更多詳細信息,請參閱此處的文檔:https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#map

您也可以省略參考路徑,d.ts文件當您的tsconfig設置爲自動搜索node_modules或者使用類似typings的工具來安裝不提供模塊類型的庫的定義時。 (見這裏:https://github.com/typings/typings - 但這不應該是immutablejs必需的)。

+0

謝謝! system.config.js是問題! – r4ph43l