Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于Angular 2应用程序,TFS构建失败(TypeScript错误),但在本地构建一切正常_Angular_Typescript_Tfs_Tfsbuild - Fatal编程技术网

对于Angular 2应用程序,TFS构建失败(TypeScript错误),但在本地构建一切正常

对于Angular 2应用程序,TFS构建失败(TypeScript错误),但在本地构建一切正常,angular,typescript,tfs,tfsbuild,Angular,Typescript,Tfs,Tfsbuild,我正在使用安装了更新3的Visual Studio 2015。我有一个解决方案,它包含一个用TypeScript编写的Angular 2应用程序。此应用程序通过Angular自己的“5分钟快速启动”指南添加到解决方案中: angular应用程序甚至还不完整,事实上它还刚刚开始开发。angular 2项目的所有配置文件都直接取自该指南,尚未修改 这个解决方案在我的本地机器上构建得很好。但是,当我执行启动构建的TFS签入时,解决方案无法在远程构建服务器上构建 我在MSBuild步骤中遇到以下错误,它

我正在使用安装了更新3的Visual Studio 2015。我有一个解决方案,它包含一个用TypeScript编写的Angular 2应用程序。此应用程序通过Angular自己的“5分钟快速启动”指南添加到解决方案中:

angular应用程序甚至还不完整,事实上它还刚刚开始开发。angular 2项目的所有配置文件都直接取自该指南,尚未修改

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

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

  • 错误TS2307:生成:找不到模块“@angular/core”
  • 错误TS1219:构建:对装饰器的实验性支持是一项功能,在将来的版本中可能会发生更改。指定“--experimentalDecorators”以删除此警告
  • 错误TS2315:生成:类型“any”不是泛型
  • 错误TS1148:生成:除非提供“-module”标志,否则无法编译模块
  • 错误TS2304:生成:找不到名称“it”
大多数错误都会重复多次,指向angular 2应用程序的各个部分。总共有29个错误

有趣的是,构建日志中的每一个错误后面都有一个对包含angular应用程序的.csproj文件的引用

我的理解是,TypeScript文件应该基于tsconfig.json文件中定义的配置属性进行编译,而不是基于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就是在VisualStudio中引入了对tsconfig.json的改进支持的时候。希望我所要做的就是让某人更新TFS服务器上的TypeScript。

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


在您的情况下,请尝试将TypeScript 1.5更新为1.8版,并再次对生成进行排队。如果仍然不起作用,您可以尝试在生成代理(计算机)上手动生成,而不是通过tfs来缩小问题范围,无论是与代理环境还是tfs生成定义设置有关。

是的,这正是我们要解决的问题,也是我发布编辑的原因。TFS构建服务器没有运行Visual Studio Update 3,这是在添加TypeScript 1.8以及对tsconfig.json的支持时发生的。因此,在TFS服务器上安装更新3之前,类型脚本将无法在构建时正确传输。我们今天应该发布更新3,我可能最终能够解决这个问题。你解决问题了吗?@squadwuschel是的,请参阅原始问题底部的编辑。生成服务器未安装Visual Studio Update 3,这使您能够在生成时使用TypeScript 1.8并支持.tsconfig文件。更新生成服务器修复了该问题。