2017-01-09 97 views
1

我想將Angular 2項目編譯爲commonjs模塊。將Angular 2編譯爲commonjs

我有這個tsconfig.json

{ 
    "compilerOptions": { 
    "declaration": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "mapRoot": "./", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "outDir": "../dist/lib", 
    "sourceMap": true, 
    "target": "es5", 
    "removeComments": true 
    } 
} 

我用ntsc,我得到了這樣的錯誤:

node_modules/@angular/common/src/directives/ng_class.d.ts(46,34): error TS2304: Cannot find name 'Set'. 
node_modules/@angular/common/src/pipes/async_pipe.d.ts(44,38): error TS2304: Cannot find name 'Promise'. 
node_modules/@angular/compiler/src/aot/compiler.d.ts(32,38): error TS2304: Cannot find name 'Promise'. 
node_modules/@angular/compiler/src/aot/compiler.d.ts(44,32): error TS2304: Cannot find name 'Map'. 

我有npm版本4.0.5nodev7.3.0ntscVersion 2.1.0

回答

1

對於transpiling到ES5,你必須在你的主TS文件添加下列引用:

///<reference path="node_modules/angular2/typings/browser.d.ts"/>

+0

我遇到了類似Angular-CLI生成項目的問題。我使用Eclipse和來自[Angelo Zerr](https://github.com/angelozerr)的插件。 「ng build」和「ng serve」命令可以很好地工作,但tsc在node_modules下顯示錯誤。解決方案中的路徑(node_modules/angular2/typings/browser.d.ts)不存在,它是來自angular2 beta的舊路徑。我如何在當前的Angular版本中解決這個問題? – Springrbua

1

你想要target: "es6",這些缺少類是不具備的ECMAScript 5

+0

但是,如果使用'「ES6」'作爲'目標',我也必須從ES6編譯爲ES5 –

+0

我不知道ES 6代碼將如何轉換爲ES 5並仍然有效。但是,如果你想在es5代碼中使用es6功能,你應該檢查出babel,它可以讓你做到這一點 – Dummy

+0

我遵循這篇文章:http://blog.angular-university.io/how-to-create-an-angular- 2-library-and-how-to-consume-it-jspm-vs-webpack/ –