Typescript compilation errors not being displayed

2019-03-27 22:10发布

问题:

This is something that some days ago was working fine, so I am not sure what has changed since then (other than updating to ASP.NET Core RC2 and installing some extension for VS2015 as I recall)

The issue is that when running from VS2015 a Gulp task to compile my typescript files, if there is an error it shows for example:

[10:02:54] Compiling typescript into javascript
[10:02:56] TypeScript: 1 semantic error
[10:02:56] TypeScript: emit succeeded (with errors)
[10:02:56] Finished 'compile' after 2.47 s
Process terminated with code 0.

without any description of the error.

in CMD:

$ tsc -v
Version 1.8.10

In VS2015 Package Manager console:

PM> tsc -v
Version 1.8.10

so I think VS2015 is at least using the same typescript compiler in PATH and that shouldn't be a problem. Also this is the latest version but I have tried with 1.7 and the same thing happens.

My gulp task:

gulp.task('compile', function () {
    log('Compiling typescript into javascript');
    return gulp
            .src(config.allts)
            .pipe($.sourcemaps.init())
            .pipe($.typescript({
                noImplicitAny: true,
                target: 'ES5'
            }))
            .pipe($.sourcemaps.write('.'))
            .pipe(gulp.dest(config.compileFolder));
});

And I am using:

"gulp-typescript": "2.10.0"

although I have tried with the latest:

"gulp-typescript": "2.13.4"

with no luck.

As I understood I don't need a tsconfig.json at the root of my project since I am using gulp-typescript and I am passing already the compilerOptions in the gulp task itself, so I have deleted the tsconfig.json I had because it does not seem to be used.

If I remove all the compilerOptions from my gulp task:

gulp.task('compile', function () {
    log('Compiling typescript into javascript');
    return gulp
            .src(config.allts)
            .pipe($.sourcemaps.init())
            .pipe($.typescript({
                //removed
            }))
            .pipe($.sourcemaps.write('.'))
            .pipe(gulp.dest(config.compileFolder));
});

I get more semantic errors also without description.

[10:12:57] Compiling typescript into javascript
[10:13:00] TypeScript: 184 semantic errors
[10:13:00] TypeScript: emit succeeded (with errors)
[10:13:01] Finished 'compile' after 3.83 s
Process terminated with code 0.

so the options are definitely being used.

And if in my CMD I go to the folder where I have a typescript and try to compile it with:

C:/>Sample/app> tsc mytestfile.ts

I can properly see all the typescript compilation errors.

Any idea what might be wrong in my VS2015 or my gulp-typescript?

UPDATE: I have tried with gulp-tsc instead gulp-typescript and it works well. So the problem must be with gulp-typescript

gulp.task('compile', function () {
    log('Compiling typescript into javascript');
    return gulp
            .src(config.allts)
            .pipe($.sourcemaps.init())
            .pipe($.tsc({
                noImplicitAny: true,
                target: 'ES5'
            }))
            .pipe($.sourcemaps.write('.'))
            .pipe(gulp.dest(config.compileFolder));
});

回答1:

If you have Microsoft .Net Core 1.0.0 RC2 Tooling Preview 1 installed. Looks like there is an issue: After installing Preview 1 of the tooling, TypeScript errors aren't shown #526

Updated After release of .Net Core 1 / Tooling Preview 2

Updating to / Installing the release version of .Net Core 1.0 which updates the Tooling to Preview 2 resolves this issue.

Prior to this uninstalling the tooling preview 1 and re-installing web development tools for vs 2015 would resolve the issue where error details are not shown.

I had the same issue. Since I was not using the functionality of .Net Core 1 RC2 Preview. I was able to resolve the issue with typescript errors not being shown with the workaround mentioned in the bug report on Github by:

  1. uninstalling 'Microsoft .Net Core 1.0.0 RC2 - VS 2015 Tooling Preview 1'
  2. Reinstalling Web Development tools for visual studio 2015 in add/remove visual studio , Modify.

After doing so I could once again see typescript error messages in Task Runner Explorer.



回答2:

I've found part of the answer at least. if you run gulp-typescript from a nodejs command prompt it will show you the errors. The way gulp-typescript is printing the error messages however isn't shown in visual studio task runner.

If i change the reporter used for typescript to this it shows the errors just fine (add this function to your gulpfile.js)

function visualStudioReporter() {
    return {
        error: function (error) {
            //This works
            gutil.log("Typescript: error", error.message);
            //This isn't shown
            console.error(error.message);
        },
        finish: ts.reporter.defaultReporter().finish
    };
}

And now you can use the reporter like this

var ts = require("gulp-typescript")

gulp.task("compile", function() {
    gulp.src("./**/*.ts")
       .pipe(ts(tsProject, undefined, visualStudioReporter()))
});