2016-06-15 2 views
1

Я слежу за угловым 2 машинописным текстом demo. Теперь я хочу использовать собственный конвейер сборки, используя gulp. Тем не менее, я получаю ошибки в машиностроении при попытке использовать мою задачу компиляции gulp. Это моя структура проектаУгловая 2 Goldp Компиляция машинописных файлов

- project 
    |- app 
    |- app.component.ts 
    |- main.ts 
    |- node-modules 
    |- typings 
    gulpfile.js 
    tsconfig.json 
    package.json 

Это мой gulpfile

var gulp = require('gulp'); 
var ts = require('gulp-typescript'); 

gulp.task('compile-app', function() { 
    return gulp 
     .src('./app/**/*.ts') 
     .pipe(ts({ 
      noImplicitAny: true, 
      out: 'output.js' 
     })) 
     .pipe(gulp.dest('./bin')); 
}); 

Когда я пытаюсь запустить «Глоток компиляции приложение» я получаю следующие ошибки

project/node_modules/@angular/core/src/application_ref.d.ts(39,88): error TS2304: Cannot find name 'Promise'. 
project/node_modules/@angular/core/src/di/reflective_provider.d.ts(105,123): error TS2304: Cannot find name 'Map'. 
project/node_modules/@angular/core/src/facade/collection.d.ts(1,25): error TS2304: Cannot find name 'MapConstructor'. 
etc...... 

Я не могу понять, что происходит. Есть идеи?

узел v6.2.1 НОГО v3.9.3 типизации 1.0.5

ответ

2

Из ваших ошибок глотка он выглядит как вам не хватает возможности ES6. Если вы изменили свой целевой атрибут .tsconfig на «es6», он скомпилируется, потому что Promise и Map имеют определения ES6. Проблема с этим подходом - ES6 по-прежнему несовместима с большинством браузеров. Чтобы использовать эти и целевые ES5, вам понадобится es6-shim.

С типизации ~ 1.0 и выше вам нужно использовать:

typings install dt~es6-shim --save --global 
+0

Просто попробовал с атрибутом цели, установленным на «es6», и скомпилировал его без проблем. Тем не менее, попытались установить типизацию 'es6-shim',' es6-prom' и 'es6-collections', но продолжают получать ошибки. Вы указали мне в правильном направлении, подумайте, что мне, возможно, придется начать с чистого листа, чтобы прибить это - все немного запуталось! –

+1

Согласитесь, это все еще движущаяся цель. Я думаю, что угловой 2 теперь использует core-js вместо es6-shim. Из QuickStart это типизация, в которой вы нуждаетесь: https://github.com/angular/quickstart/blob/master/typings.json. – drinck

0

можно удалить ошибки сборки компиляции путем добавления

///<reference path="../typings/index.d.ts/"/> 

к основной точке входа приложения, в этот случай main.ts, т. е. где я загружаю приложение. Это даст машинописный правильные ссылки на машинопись определений core-js установленные типизации, то есть,

/// <reference path="globals/core-js/index.d.ts" /> 

и, таким образом, определения регулировочных для ES6 работать с ES5 браузерами.

ПРИМЕЧАНИЕ: Вам не нужно устанавливать es6-shim с последней версией углового (2.0.0-rc.2). Используйте core-js. Если вы добавите es6-shim и core-js, вы получите сообщения об ошибках duplicate identifier во время компиляции машинописных текстов.