2016-03-03 35 views
6

因此,我在將jspm軟件包導入到typescript時發現的大多數例子都假定我想使用Systemjs在瀏覽器中加載和解釋它們。但是,我寧願使用tsc來構建commonjs模塊,並且只導入js代碼,因爲在我看來,這對我來說似乎是更一般和防錯的方法。typescript:import jspm libraries

所以我的目錄結構是這樣的:

src/index.ts 
jspm_packages/... 
config.js 
tsconfig.json 

隨着具有下列內容tsconfig:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "noEmitOnError": true, 
    "noImplicitAny": false, 
    "rootDir": "src", 
    "outDir": "target/app", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "declaration": true 
    }, 
    "exclude": [ 
    "jspm_packages", 
    "node_modules", 
    "typings", 
    "target" 
    ] 
} 

出於測試目的,我jspm install npm:angular2安裝角2,並試圖將其導入我的index.ts via import { bootstrap } from 'angular2/platform/browser';

當運行tsc時,出現錯誤

src/index.ts(1,27): error TS2307: Cannot find module 'angular2/platform/browser'. 

現在我想知道,我可以讓打印機知道jspm-packages嗎?我覺得我嘗試了一切,從tsconfig排除列表中刪除jspm_packages,切換到節點模塊分辨率或systemjs模塊生成。也許我只是沒有找到正確的組合。接下來要嘗試的任何提示?

+0

從JSPM網站第一行是「_jspm對於SystemJS通用模塊加載程序的軟件包管理器,建立在動態ES6模塊loader_之上」。我不認爲沒有system.js的情況下使用jspm是正確的方法。 –

回答

2

我也在努力解決這個問題,經過一番研究之後,我發現沒有好的解決方案來允許這個問題。

解決方法:

A)可以複製你的依賴,並與故宮安裝。自從npm解析以後,tsc不應該拋出任何錯誤。 B)更改您的tsconfig.json並將角度映射到jspm路徑。例如

"baseUrl": ".", 
"paths": { 
    "angular2/*": [ 
     "jspm_packages/npm/[email protected]/*" 
    ], 
    "rxjs/*": [ 
     "jspm_packages/npm/[email protected]/*" 
    ] 
    } 

查看https://github.com/frankwallis/plugin-typescript/tree/master/examples/angular2的完整示例。

請注意,「baseUrl」和「路徑」不是官方屬性,僅在打字稿編譯器的beta版本上。

的問題,目前正在這裏追蹤: https://github.com/Microsoft/TypeScript/issues/6012

+0

我發現這太難了,因爲intellij也無法識別路徑選項。我以相反的方式做,並將jspm指向node_modules – rweng