Bash 虽然命令成功,但Shell在Azure Devops管道中显示了大量错误

Bash 虽然命令成功,但Shell在Azure Devops管道中显示了大量错误,bash,shell,azure-devops,Bash,Shell,Azure Devops,我正在使用Azure Devops构建git repo并将其部署到第三方vps。我通过SSH从Azure Devops登录到服务器,执行一个shell脚本来拉git repo,并使用ie.vue cli和Laravel构建它 当bash脚本被执行时,我几乎在所有命令上都收到了很多错误,尽管一切都很成功——有谁能告诉我如何消除这些错误,除非某些东西真的失败了(如果npm build以代码1为例退出的话,失败会很好)。 请参见下面的屏幕截图 屏幕截图只对视觉问题有用。如有必要,您可以使用PasteB

我正在使用Azure Devops构建git repo并将其部署到第三方vps。我通过SSH从Azure Devops登录到服务器,执行一个shell脚本来拉git repo,并使用ie.vue cli和Laravel构建它

当bash脚本被执行时,我几乎在所有命令上都收到了很多错误,尽管一切都很成功——有谁能告诉我如何消除这些错误,除非某些东西真的失败了(如果npm build以代码1为例退出的话,失败会很好)。 请参见下面的屏幕截图


屏幕截图只对视觉问题有用。如有必要,您可以使用PasteBin或etc共享长日志

根据Azure的说法,它只是在任何shell中运行代码。因此,在Bash中,除非明确要求停止,否则它将继续

要轻松更改此行为,可以在脚本开头添加
set-e
(或
set-o errexit
)。
errexit
选项使Bash在命令/etc返回非零退出代码时立即退出

另一个值得添加的是
set-o pipefail
选项。如果您有任何类似于
command1 | command2
的管道,这将返回任意长度管道链中的第一个非零退出代码。因此,如果command1在上面失败,但command2成功,它将从command1返回失败代码,而不是覆盖它

最后,
set-u
(或
-o nounset
)在参数扩展期间遇到未设置变量时会导致错误。如果在非交互式shell中运行,它也将退出

许多脚本通过在开始时运行
set-euo pipefail
来组合这些脚本,以便在遇到第一个问题后停止它们的运行


如果要显式强制bash脚本退出,可以相应地使用
|
&&
。如果命令失败,表达式
command | | exit
将退出,如果命令成功,表达式
command&&exit
将退出。

这似乎是从npm
V.3.10.8
开始的一个错误。你可以查一下

您可以将此脚本添加到
package.json
,并使用
--无可选开关运行命令:

"optionalDependencies": {
    "fsevents": "*"
  },

此外,您的NPM版本可能太旧。您可以与
version spec=12.x
一起使用来安装更高的node.js和npm版本。

您的packages.config看起来如何?如果在本地命令行中运行相同的npm命令,结果会是什么。