2017-04-13 38 views
0

我已经开始了一个简单的回购测试angularjs 1.6。但是我似乎有问题输出ES5代码,它可以在不systemjs运行,节点的WebPack等即转换出口和定义和进口语句typescript编译时输出“导入”时瞄准ES5

//以下app.ts

import * as angular from 'angular' 
import * as ng from 'angular' 
"use strict"; 

module ngTypescript{ 
    angular.module('ngTypescript',[]).run(($rootScope:ng.IRootScopeService) =>{ 
     console.log($rootScope.$id);   
    }); 
} 

//输出app.js

import * as angular from 'angular'; 
"use strict"; 
var ngTypescript; 
(function (ngTypescript) { 
    angular.module('ngTypescript', []).run(function ($rootScope) { 
     console.log($rootScope.$id); 
    }); 
})(ngTypescript || (ngTypescript = {})); 
//# sourceMappingURL=app.js.map 

没有编译错误但是从一个简单的HTML页面运行时(N O节点)我得到以下错误

Uncaught SyntaxError: Unexpected token import 

//tsconfig.json

{ 
     "compilerOptions": { 
     "target": "es5", 
     "module": "es2015", 
     "moduleResolution": "classic", 
     "sourceMap": true, 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "lib": [ "es6", "dom" ], 
     "noImplicitAny": true, 
     "removeComments": true, 
     "preserveConstEnums": true, 
     "allowUnreachableCode": true 
     }, 
     "exclude": [ 
      "node_modules/*" 
     ] 
    } 

我需要的输出JS的环境中而无需进口或出口的支持才能运行。即不在节点后面,或使用systemjs或webpack。

the sample repo is here

回答

0

您已经在tsconfig.json指定你想要的打字稿编译器编译到ES5。这将处理像箭头函数,生成器,字符串插值e.t.c的ES6东西

它不会处理模块,因为module字段仍设置为ES2015。您需要将其更改为amd,umdsystem(对于systemjs)。

检查this了。只要搜索“模块”,你会看到可用的选项

+0

理想情况下,我希望输出的代码不要求systemjs或webpack等。基本上,我有角1.5代码工作,但是当我交换到1.6,并更改为新的模块化类型库它打破。所以我创建了这个回购看看我能否找到问题 – Tim

0

您需要可以安装角CLI(做 npm install -g @angular/cli或通过browserify或传递的WebPack你现在的身材。

CLI可用于生成在其 package.json中包含一些有用的npm脚本的项目( ng new PROJECT_NAME)。

编辑:没有读它是关于一个旧版本的Angular。使用browserify/webpack的选项仍然有效。

+0

这是角1.6? cli是2和以上? – Tim

+0

是的,确实如此。我的错,我错过了。我将编辑我的帖子,但带有browserify/webpack的变体仍然有效。 –