Jenkins 中的 TypeScript 构建错误,但不是本地的

TypeScript build error in Jenkins but not locally

你好,我在尝试构建 TypeScript 应用程序时遇到了我的 Jenkins 管道之一的问题。

管道签出 TypeScript 项目并运行:

yarn install
yarn build

但是在构建过程中出现错误,管道失败并显示错误:

│       TS2571: Object is of type 'unknown'.

我试图在 AWS EC2 实例上重现此错误,该实例使用与我的 Jenkins EC2 相同的 AMI 映像。我确保使用与我的 Jenkins 服务相同的节点版本 (v12.22.3)。但是在 运行 yarn install + build 之后,我没有收到这个错误。构建成功。

我可以看到 Jenkins 日志中的错误指的是 'error' 变量:

      } catch (error) {
        expect(error.name).toEqual('Error');
      }

在谷歌搜索此错误后,解决方案似乎是更新代码以在错误对象上包含一个类型(由于 TypeScript 更新),但这不是我的代码,我不是typescript dev,我知道代码是在我的 VM 上构建的,使用与 node.js 相同的版本。所以我肯定可以让它在 Jenkins 上工作吗?

有没有人有任何提示可以帮助调试此问题? 谢谢

我敢打赌你安装了不同版本的 Typescript。您可能安装了不同版本的打字稿。

在 Typescript 3.5.1 中,捕获的错误类型为 any。参见 playground

在 Typescript 4.6.2 中,捕获的错误类型为 unknown。参见 playground

看起来是 Typescipt 4.4 (see this release note)。

在这两个版本之间的某个地方,类型发生了变化。看起来你的 CI 服务器是 运行 比你本地环境更新的版本。

如果您的机器和 CI 服务器依赖于全局安装的打字稿,则版本可能会有很大不同。我建议您更新本地打字稿以匹配 CI.

上的内容