这是之前工作正常的,所以我不确定自那时起发生了什么变化(除了更新到 ASP.NET Core RC2 并安装一些针对 VS2015 的扩展,如我所记得的)。
问题在于,当从 VS2015 运行 Gulp 任务来编译我的 TypeScript 文件时,如果出现错误,则会显示例如:
[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至少使用了路径中相同的TypeScript编译器,这不应该是一个问题。另外,这是最新版本,但我也尝试过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"
没有成功。
据我所知,由于我使用了gulp-typescript
并且已经在gulp任务中传递了编译器选项,因此我不需要在项目根目录下创建tsconfig.json文件。因此,我已删除了之前的tsconfig.json文件,因为似乎没有用到。
如果我从gulp任务中删除所有的编译器选项:
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中进入我有TypeScript的文件夹,尝试用以下命令编译它:
C:/>Sample/app> tsc mytestfile.ts
我可以正确查看所有typescript编译错误。
您认为我的VS2015或gulp-typescript有什么问题吗?
更新:我已经尝试使用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));
});