2016-05-24 102 views
7

這是前幾天工作正常的東西,所以我不確定自那以後發生了什麼變化(除了更新到ASP.NET Core RC2並安裝了一些擴展爲VS2015我記得)使用gulp-typescript不會在VS2015中顯示Typescript編譯錯誤

的問題是,從VS2015運行咕嘟咕嘟任務時編譯我打字原稿文件,如果有就說明例如一個錯誤:

[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. 

沒有任何錯誤描述。

在CMD:

$ tsc -v 
Version 1.8.10 

在VS2015包管理器控制檯:

PM> tsc -v 
Version 1.8.10 

所以我認爲VS2015至少使用路徑相同的打字稿編譯器和不應該是一個問題。這也是最新的版本,但我已經嘗試過1.7,同樣的事情發生。

我一飲而盡任務:

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)); 
}); 

,我使用:

"gulp-typescript": "2.10.0" 

雖然我已經用最新的嘗試:

"gulp-typescript": "2.13.4" 

沒有運氣。

據我所知,我不需要在我的項目的根目錄tsconfig.json,因爲我使用gulp-typescript,我已經在gulp任務本身已經把compilerOptions,所以我已經刪除了我有tsconfig.json因爲它似乎沒有被使用。

如果我刪除所有從我一飲而盡任務compilerOptions:

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)); 
}); 

我得到更多的語義錯誤也沒有說明。

[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. 

所以這些選項肯定被使用。

如果在我的CMD我去的地方,我有一個打字稿,並嘗試編譯它的文件夾:

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

我可以正確地看到所有的打字稿編譯錯誤。

任何想法什麼可能是我的VS2015或我的吞食打字稿錯?

UPDATE:我嘗試過使用gulp-tsc代替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)); 
}); 
+0

我在隊友的機器上遇到了與VS2015 + gulp-typecript相同的問題,他的終端顯示了隱含的「N語義錯誤」。項目配置是相同的,但在我的終端上,我可以看到確切的錯誤說明。 – Cubius

+0

我目前的解決方法是在VS「錯誤列表」窗口中切換到「Build + IntelliSense」,並使用那裏的信息來修復錯誤。 – user764754

回答

3

如果您安裝了Microsoft .Net Core 1.0.0 RC2 Tooling Preview 1。貌似有一個問題:After installing Preview 1 of the tooling, TypeScript errors aren't shown #526

更新的.Net核心的版本1 /工具預覽後2

更新到/安裝的.Net核心1.0的發佈版本,更新工裝預覽2所做出決議這個問題。

enter image description here

在此之前卸載工具預覽1,並重新安裝了VS 2015年就解決了其中的錯誤細節未顯示的問題Web開發工具。

我有同樣的問題。因爲我沒有使用.Net Core 1 RC2 Preview的功能。我能解決與未顯示與在bug報告中提到Github上的解決方法打字稿錯誤的問題:

  1. 卸載「微軟的.Net核心1.0.0 RC2 - 2015年VS工具預覽1」 enter image description here
  2. 在add/remove visual studio中重新安裝Visual Studio 2015的Web開發工具,修改。 enter image description here

這樣做,我可以再一次看到在任務運行資源管理器打字稿錯誤消息後。 enter image description here

4

我至少找到了部分答案。如果您從nodejs命令提示符運行gulp-typescript,它會向您顯示錯誤。然而,gulp-typescript打印錯誤消息的方式在Visual Studio任務運行器中未顯示。

如果我更改用於打字稿該記者則顯示錯誤就好了(這個功能添加到您的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 
    }; 
} 

現在你可以使用記者這樣

var ts = require("gulp-typescript") 

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

可能很明顯,但是icymi'var gutil = require('gulp-util');'它指的是https://www.npmjs.com/package/gulp-util。真棒解決方案順便說一句,謝謝! –