然后我在构建定义中的 MSBuild Arguments 中添加了以下属性:
/p:TreatWarningsAsErrors=False
但它尚未发挥作用。
我也通过右键单击每个项目进行交叉检查,并且没有选中“将警告视为错误”选项。
我从后期制作脚本中调用 npm install 命令。
我在尝试更改后重新启动了构建控制器和构建代理,但没有成功。
对此方向的任何帮助表示赞赏。
答案 0 :(得分:6)
MSBuild参数在这里没有帮助你......后构建脚本在MSBuild完成执行后运行。
问题是 npm 正在向stderr
流写入警告,TFS会检测并报告为错误。您可以通过将错误流重定向到stdout
来抑制此问题,如下所示:
npm install 2>&1
然而,这将抑制错误以及警告,在您的情况下可能会或可能不会接受。在我们的示例中,我们在预构建脚本期间从PowerShell脚本调用 npm install 。我们重定向输出,但之后我们也扫描输出,查找字符串ERR!
,如下所示:
& npm install *>&1 | ForEach-Object {
$obj = $_
if ( $obj -is [System.Management.Automation.ErrorRecord] ) {
$s = $obj.Exception.Message
}
else {
$s = $obj.ToString()
}
if ( $s.Contains('ERR!') ) {
Write-Error $s
}
else {
Write-Output $s
}
}
$LASTEXITCODE = 0
请注意,我们还将$LASTEXITCODE
设置为零,以便PowerShell不会将退出代码从 npm 传递回TFS。
答案 1 :(得分:1)
可以使用loglevel
选项,以使警告根本不出现。这样可以避免在标准错误中显示警告,从而停止构建或写入警告错误的问题。
我通常使用npm install --loglevel=error --no-update-notifier
。我注意到更新检查还会中断npm的构建过程。
答案 2 :(得分:0)
请尝试使用正确的语法而不是您的
/p:TreatWarningsAsErrors="false"
答案 3 :(得分:0)
您可以使用--silent
参数在安装过程中使npm静音:
npm install --silent
您不需要这样的任何msbuild参数。
答案 4 :(得分:0)
在 CI 服务器中,这是一个非常常见的问题,每当我们运行“npm build”时,管道就会失败
我们收到一些警告,CI 服务器将它们视为错误并且管道被终止。
要消除此错误,只需在管道中添加环境变量,如下所述:
env:
CI: false