使用gulp转换typescript angular app时出错

时间:2016-03-05 15:10:07

标签: typescript gulp angular gulp-typescript

我在使用angular / gulp在应用程序上将typescript转换为js时遇到错误。

src/app/app.component.ts(1,25): error TS2307: Cannot find module 'angular2/core'.
src/app/main.ts(5,28): error TS2307: Cannot find module 'angular2/platform/browser'.

但是一切正常:编译没问题,包含和systemjs都可以,所以应用程序启动没有问题。但我想避免出现这种错误!

这是我使用的gulp文件:

const TS_CONFIG = {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
};
gulp.task('build.js.dev', ['clean.dev'], function () {
    gulp.src(['./' + APP_DIR + '/**/*.ts'])
        .pipe(ts(TS_CONFIG))
        .pipe(gulp.dest('./' + APP_DEST));
});

这个错误可能与打字有关,但我不知道如何在这里设置它......

感谢您的帮助。

注意:我使用的是jspm_packages,但没有使用npm那么多的更改。

2 个答案:

答案 0 :(得分:0)

删除这些错误的最快速最简单的方法是提供定义作为打字稿编辑的来源。

使你的任务适应:

gulp.task('build.js.dev', ['clean.dev'], function () {
    gulp.src([
             'node_modules/angular2/core.d.ts',
             'node_modules/angular2/typings/browser.d.ts',
             './' + APP_DIR + '/**/*.ts'
         ])
        .pipe(ts(TS_CONFIG))
        .pipe(gulp.dest('./' + APP_DEST));
});

答案 1 :(得分:0)

我建议不要手动提供所有文件,而是实际使用已经拥有所有必需数据的tsconfig.json:

gulp.task('build.js.dev', function() 
{
    var tsProject = ts.createProject('tsconfig.json');

    var tsResult = tsProject.src()
        .pipe(sourcemaps.init())   
        .pipe(ts(tsProject));  

    return tsResult.js.pipe(gulp.dest('./' + APP_DEST));
});

示例tsconfig.json:

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