Angular 2应用程序(TypeScript错误)的TFS Build失败,但是一切都在本地构建良好

时间:2016-08-26 16:17:34

标签: angular typescript tfs tfsbuild

我正在使用安装了Update 3的Visual Studio 2015。我有一个包含用TypeScript编写的Angular 2应用程序的解决方案。通过遵循Angular自己的" 5分钟快速启动"该应用程序已添加到解决方案中。指南:https://angular.io/guide/quickstart

角度应用甚至还没有完成,实际上它几乎没有开始开发。 angular 2项目的所有配置文件都是直接从该指南中获取的,并且未经过修改。

该解决方案在我的本地计算机上构建得很好。但是,当我执行启动构建的TFS签入时,解决方案无法在远程构建服务器上构建。

我在MSBuild步骤中遇到以下错误,并且它们与所有与TypeScript相关:

  • 错误TS2307:构建:无法找到模块' @ angular / core'。
  • 错误TS1219:构建:对装饰器的实验支持是一项在将来的版本中可能会发生变化的功能。指定' - experimentalDecorators'删除此警告
  • 错误TS2315:构建:键入'任何'不是通用的。
  • 错误TS1148:构建:无法编译模块,除非' - 模块'提供了国旗
  • 错误TS2304:构建:找不到名称' it'。

大多数错误都会重复多次,指向角度2 app的各个部分。总共有29个错误。

有趣的是,构建日志中的每个错误都会跟随对包含角度应用程序的.csproj文件的引用。

据我了解,应该根据tsconfig.json文件中定义的配置属性编译TypeScript文件,而不是Visual Studio项目的属性。实际上,当我在本地打开解决方案并尝试从Visual Studio中的属性修改TypeScript配置时,它会告诉我由于tsconfig.json文件存在而禁用了这些属性。

同样,一切都在本地构建良好,零错误。它只能在远程构建服务器上构建。

那么有人有任何想法吗?远程构建服务器可能不是最新的,因此不能读取我的tsconfig.json文件吗?

只是为了彻底,这是我的tsconfig.json文件......

{
"compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true
},
"compileOnSave": true
}

修改

更新:好的,我想我正在缩小这个问题。似乎在TFS构建中我的tsconfig.json肯定没有被读取。

这是我在本地运行MSBuild时的日志...

PreComputeCompileTypeScriptWithTSConfig:
  C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\[MY PATH GOES HERE]\tsconfig.json" 
CompileTypeScriptWithTSConfig:
  C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\[My PATH GOES HERE]\tsconfig.json"

但这是远程TFS构建中发生的事情......

        PreComputeCompileTypeScript:
          C:\Program Files (x86)\Microsoft  SDKs\TypeScript\1.5\tsc.exe  --sourcemap --target ES5 --noEmitOnError COMPUTE_PATHS_ONLY 
        CompileTypeScript:
          C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.5\tsc.exe  --sourcemap --target ES5 --noEmitOnError 

所以...我的构建服务器使用TypeScript 1.5,而本地我有1.8。当然,1.8是在Visual Studio中引入了对tsconfig.json的改进支持。希望我所要做的就是让某人更新TFS服务器上的TypeScript。

1 个答案:

答案 0 :(得分:1)

您最好确保构建服务器(构建代理)上的环境与本地环境相同。这将大大降低构建失败的风险。

在您的情况下,尝试将TypeScript 1.5 更新为版本 1.8 并再次对构建进行排队。如果它仍然不起作用,您可以尝试在构建代理(机器)上手动构建,而不是通过tfs来缩小与代理环境或TFS构建定义设置相关的问题。