You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress中cy.exec()调用ssh命令始终触发超时错误该如何解决

你遇到的超时本质是cy.exec()会等待执行的命令完全退出、返回退出码后才会结束,而你当前调用的ssh命令会持续保持会话连接,等待远程的file.exe进程结束后才会退出,只要file.exe还在运行,ssh命令就不会返回,自然就触发了cy.exec()的超时阈值。

解决方案
  • 调整ssh命令参数,让其执行完启动逻辑后立刻断开连接,不等待远程进程结束
    需新增ssh参数-fnT -o StrictHostKeyChecking=no,同时根据远程操作系统的类型,给启动命令增加后台运行标识:
    • 远程为Windows系统时,使用cmd /c start /b启动程序,避免命令行阻塞
    • 远程为Linux/macOS系统时,使用nohup 命令路径 &启动程序
  • 按需调整cy.exec()的超时配置,默认超时为60000毫秒(60秒),如果你的命令确实需要更长执行时间,可以手动指定timeout参数,设为0可禁用超时逻辑
  • 可选配置failOnNonZeroExit: false,如果远程命令的退出码非0但你确认属于正常情况,可以加这个参数避免Cypress将其判定为执行失败

代码示例(远程为Windows场景)

cy.exec('ssh -fnT -o StrictHostKeyChecking=no username@111.111.1.1 "cmd /c start /b \\file.exe"', {
  timeout: 10000, // 可根据实际情况调整超时时间,单位为毫秒
  failOnNonZeroExit: false // 无需可删除
})

你可以先在本地系统的终端直接执行整条ssh命令,确认命令执行后会立刻返回终端输入提示符,不会卡住,再放到Cypress中运行,就能避免超时问题。

内容的提问来源于stack exchange,提问作者F.C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:03