使用 gulp-typescript 在 VS2015 中未显示 Typescript 编译错误
Typescript compilation errors not being displayed in VS2015 using gulp-typescript
这是几天前工作正常的东西,所以我不确定从那以后发生了什么变化(除了更新到 ASP.NET Core RC2 并安装一些 VS2015 的扩展,我记得)
问题是当 运行 从 VS2015 执行 Gulp 任务来编译我的打字稿文件时,如果出现错误,它会显示例如:
[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 至少在 PATH 中使用相同的打字稿编译器,这应该不是问题。这也是最新版本,但我已经尝试使用 1.7 并且发生了同样的事情。
我的gulp任务:
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 因为它似乎没有被使用。
如果我从 gulp 任务中删除所有 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
我可以正确看到所有的 typescript 编译错误。
知道我的 VS2015 或我的 gulp-typescript 有什么问题吗?
UPDATE:我尝试使用 gulp-tsc 而不是 gulp-typescript,它运行良好。 所以问题一定出在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));
});
我至少找到了部分答案。如果您在 nodejs 命令提示符下使用 运行 gulp-typescript,它会向您显示错误。 gulp-typescript 打印错误消息的方式在 visual studio 任务 运行ner 中没有显示。
如果我将用于 typescript 的报告器更改为此它会显示错误(将此功能添加到您的 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()))
});
如果您安装了 Microsoft .Net Core 1.0.0 RC2 Tooling Preview 1。似乎有问题:After installing Preview 1 of the tooling, TypeScript errors aren't shown #526
在 .Net Core 1 / Tooling Preview 2 发布后更新
更新到/安装 .Net Core 1.0 的发行版本,将工具更新到预览版 2 解决了这个问题。
在此之前卸载工具预览 1 并重新安装 vs 2015 的 Web 开发工具将解决未显示错误详细信息的问题。
我遇到了同样的问题。因为我没有使用 .Net Core 1 RC2 Preview 的功能。我能够通过 Github 的错误报告中提到的解决方法解决打字稿错误未显示的问题:
- 正在卸载'Microsoft .Net Core 1.0.0 RC2 - VS 2015 Tooling Preview 1'
- 在add/removevisual studio中重新安装visual studio2015的Web开发工具,修改。
这样做之后,我可以再次在 Task Runner Explorer 中看到打字稿错误消息。
这是几天前工作正常的东西,所以我不确定从那以后发生了什么变化(除了更新到 ASP.NET Core RC2 并安装一些 VS2015 的扩展,我记得)
问题是当 运行 从 VS2015 执行 Gulp 任务来编译我的打字稿文件时,如果出现错误,它会显示例如:
[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 至少在 PATH 中使用相同的打字稿编译器,这应该不是问题。这也是最新版本,但我已经尝试使用 1.7 并且发生了同样的事情。
我的gulp任务:
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 因为它似乎没有被使用。
如果我从 gulp 任务中删除所有 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
我可以正确看到所有的 typescript 编译错误。
知道我的 VS2015 或我的 gulp-typescript 有什么问题吗?
UPDATE:我尝试使用 gulp-tsc 而不是 gulp-typescript,它运行良好。 所以问题一定出在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));
});
我至少找到了部分答案。如果您在 nodejs 命令提示符下使用 运行 gulp-typescript,它会向您显示错误。 gulp-typescript 打印错误消息的方式在 visual studio 任务 运行ner 中没有显示。
如果我将用于 typescript 的报告器更改为此它会显示错误(将此功能添加到您的 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()))
});
如果您安装了 Microsoft .Net Core 1.0.0 RC2 Tooling Preview 1。似乎有问题:After installing Preview 1 of the tooling, TypeScript errors aren't shown #526
在 .Net Core 1 / Tooling Preview 2 发布后更新
更新到/安装 .Net Core 1.0 的发行版本,将工具更新到预览版 2 解决了这个问题。
在此之前卸载工具预览 1 并重新安装 vs 2015 的 Web 开发工具将解决未显示错误详细信息的问题。
我遇到了同样的问题。因为我没有使用 .Net Core 1 RC2 Preview 的功能。我能够通过 Github 的错误报告中提到的解决方法解决打字稿错误未显示的问题:
- 正在卸载'Microsoft .Net Core 1.0.0 RC2 - VS 2015 Tooling Preview 1'
- 在add/removevisual studio中重新安装visual studio2015的Web开发工具,修改。
这样做之后,我可以再次在 Task Runner Explorer 中看到打字稿错误消息。