【发布时间】:2017-01-03 09:12:18
【问题描述】:
我正在使用安装了 Update 3 的 Visual Studio 2015。我有一个包含用 TypeScript 编写的 Angular 2 应用程序的解决方案。这个应用程序是按照 Angular 自己的“5 分钟快速入门”指南添加到解决方案中的:https://angular.io/guide/quickstart
Angular 应用程序甚至还没有完成,实际上它才刚刚开始开发。 Angular 2 项目的所有配置文件都直接取自该指南,没有被修改过。
该解决方案在我的本地计算机上构建得很好。但是,当我进行 TFS 签入以启动构建时,解决方案无法在远程构建服务器上构建。
我在 MSBuild 步骤中遇到以下错误,它们都与 TypeScript 相关:
- 错误 TS2307:构建:找不到模块“@angular/core”。
- 错误 TS1219:构建:对装饰器的实验性支持是一项可能在未来版本中更改的功能。指定“--experimentalDecorators”以删除此警告
- 错误 TS2315:构建:类型“任何”不是通用的。
- 错误 TS1148:构建:除非提供“--module”标志,否则无法编译模块
- 错误 TS2304:构建:找不到名称“它”。
这些错误中的大多数都会重复多次,指向 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 是在 Visual Studio 中引入对 tsconfig.json 的改进支持的时候。希望我所要做的就是让某人更新 TFS 服务器上的 TypeScript。
【问题讨论】:
-
你的问题解决了吗?
-
@squadwuschel 是的,请参阅原始问题底部的编辑。构建服务器没有安装 Visual Studio Update 3,这就是为您提供 TypeScript 1.8 并在构建时支持 .tsconfig 文件的原因。更新构建服务器解决了这个问题。
标签: angular typescript tfs tfsbuild