2016-03-01 2 views
1

Я пытаюсь автоматизировать компиляцию машинописного текста с новой угловой версией 2.0 beta.Angular2 beta и gulp-tsc - Не удается найти модуль 'angular2/core'

Структура Проект является:

myapp 
|--node_modules 
    |---angular2 
      |--core.d.ts 
      |--... 
|--lib 
    |--resources 
     |--app 
      |--app.component.ts 
|--typings 
    |--.. 
. 
|--package.json 
|--gulpfile.js 

app.component.ts выдержка:

import {Component, View} from 'angular2/core'; 
import {TechnologiesService} from './services'; 

Когда я запускаю команду машинопись (TSC) непосредственно из оболочки все идет хорошо и создаются файлы javascript. Однако, когда я запускаю задачу компиляции gulp, есть некоторые ошибки, потому что она не находит угловые2/core и угловые2/платформы/браузерные модули. Зачем?

[16:35:55] Using gulpfile C:\dev\myapp\gulpfile.js 
[16:35:55] Starting 'compile-ts'... 
[16:35:55] Compiling TypeScript files using tsc version 1.8.2 
[16:35:56] [tsc] > lib/resources/app/app.component.ts(1,46): error TS2307: Cannot find module 'angular2/core'. 
[16:35:56] [tsc] > lib/resources/app/app.component.ts(44,14): error TS1219: Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning. 
[16:35:56] [tsc] > lib/resources/app/main.ts(1,28): error TS2307: Cannot find module 'angular2/platform/browser'. 
[16:35:56] Failed to compile TypeScript: Error: tsc command has exited with code:2 

events.js:154 
     throw er; // Unhandled 'error' event 
    ^
Error: Failed to compile: tsc command has exited with code:2 

gulpfile машинописные сборник задачи:

var gulp = require('gulp'); 
var plugins = require('gulp-load-plugins')(); 
var typescript = require('gulp-tsc'); 
gulp.task('compile-ts', function(){ 
    return gulp.src(['./lib/resources/app/**/*.ts']) 
    .pipe(typescript({"target": "es5", "module": "system", "moduleResolution": "node", "sourceMap": true, 
         "experimentalDecorators": true, "emitDecoraasdftorMetadata": true, "removeComments": false, 
         "noImplicitAny": false})) 
    .pipe(gulp.dest('./public/app/')); 
}); 
+0

У вас есть установочные и установочные диски? Например. '/// ' – martin

+0

Когда я запустил npm install, была создана папка типов (myapp/typings). Просто попробовал добавить '/// ', но все еще жалуется на angular2/core. Также поместите '/// ' и ничего не изменится. – codependent

+0

Я предполагаю, что это проблема с рабочим каталогом. Вы пробовали указать rootDir? – Harangue

ответ

0

Я использую Глоток-машинопись вместо Глотка-TSC и следующий gulpfile.js прекрасно работают с tsconfig.json файлом.

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

gulp.task('build:client', function() { 
    var tsProject = ts.createProject('client/tsconfig.json'); 
    var tsResult = gulp.src([ 
     'client/**/*.ts', 
     '!client/typings/main/**/*.ts', 
     '!client/typings/main.d.ts' 
    ])   
     .pipe(sourcemaps.init()) 
     .pipe(ts(tsProject)) 
    return tsResult.js 
     .pipe(sourcemaps.write()) 
     .pipe(gulp.dest('server')) 
}); 

gulp.task('default', ['build:client']); 

Мой tsconfig.json

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "system", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "rootDir":"./"  
    }, 
    "exclude": [  
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 

Чтобы установить типизации

npm install typings --save-dev 

Проинициализируем typings.json

typings init 

Чтобы установить типизации для "ES6-коллекций" и "es6-prom"

typings install es6-collections --ambient --save 
typings install es6-promise --ambient --save 
+0

Я только что протестировал его и получил 76 семантических ошибок: 'dopangular/node_modules/angular2/platform/browser.d.ts (77,90): ошибка TS2304: Не удается найти имя« Promise ». ',' /dopangular/node_modules/angular2/src/core/change_detection/differs/default_keyvalue_differ.d.ts(23,15): ошибка TS2304: не удается найти имя «Карта» и т. д. С другой стороны, хотя файлы sourcemap отсутствуют, файлы .js правильно сгенерированы и приложение работает нормально. Любая идея, почему я получил эти ошибки? Почему нет файлов исходных файлов? – codependent

+0

Ошибки компиляции показаны, потому что они не могли найти типизацию для указанных объектов. Попробуйте установить типовые примеры для «es6-collections» и «es6-prom». Sourcemap добавляется в файлы js, сгенерированные. – rmchndrng

+0

Я совершенно не знаком с ts ... как мне установить эмбиент?Спасибо, что помогли мне ;-) – codependent

Смежные вопросы