升级 HX 4.56+ 后,MacOS 通过 cli open 命令打开 uni-app HBuilderX 报错

升级 HX 4.56+ 后,MacOS 通过 cli open 命令打开 uni-app HBuilderX 报错

操作步骤:

# 连续执行两次 open  
/Applications/HBuilderX.app/Contents/MacOS/cli open  
/Applications/HBuilderX.app/Contents/MacOS/cli open

预期结果:

预期 cli 进程成功返回,错误流无输出

实际结果:

4.45 版本
cli 进程成功返回,错误流无输出

4.56 版本+
第一次 open 成功打开 HBuilderX
第二次 open 时,cli 进程抛出错误 The rpc request id: “100000” for method: “client verify” occur timeout!

bug描述:

我们在 MacOS arm64 系统中,使用 NodeJS 驱动 HBuilderX 提供的 cli 命令用作一些脚本化构建

其中用到了1条命令(cli 完整路径 /Applications/HBuilderX.app/Contents/MacOS/cli):

cli open

用于打开 HBuilderX,然后进行 APP 资源打包(因为我们之前流程中发现不先打开 HBuilderX,cli 并不会正常执行 publish)

cli publish --platform APP --type appResources --project xxxx

我们之前一直固定使用 4.45 的 HBuilderX,近期因为客户端升级了 SDK,所以开发者也同步升级了最新了 4.64 HBuilderX
但发现当 HBuilderX 已经启动的时候,再执行 cli open 会出现错误流的输出(stderr):
The rpc request id: “100000” for method: “client verify” occur timeout!

于是我们逐版本下降排查发现是 4.56 版本开始,HX 的 cli open 就有该类表现、而 4.45 版本是没有的

想咨询一下官方:
我们查阅了一下 4.56 近期的一些 change log,并未发现 cli 的 open 命令相关行为有变化,该问题是否为一个 bug?

  • 如果为 bug,后续是否会修复,我们如果想使用 4.64 版本的 HBuilderX 推荐是如何暂时规避该类问题?
  • 如果不为 bug(在已经打开了 HX 的时候重复 open 就是异常行为),那么我们如何通过 cli 来判断 HBuilderX 是否已经启动?以及是否可以不启动 HBuilderX 的情况下、调用 cli publish 的命令打包 APP 资源?

更多关于升级 HX 4.56+ 后,MacOS 通过 cli open 命令打开 uni-app HBuilderX 报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

CLI没有参数可以判断HBuilderX是否已经启动。
在 Mac 电脑上,可以通过命令行使用 ps 或者 pgrep 命令来判断 HBuilderX.app 是否已经启动。
pgrep -x “HBuilderX” 如果返回了一个进程 ID(PID),说明 HBuilderX 已经启动;如果没有任何输出,说明程序未启动。

更多关于升级 HX 4.56+ 后,MacOS 通过 cli open 命令打开 uni-app HBuilderX 报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


感谢回复,官方目前对这个表现是符合预期的对吧(重复 open 为异常) 这种情况下错误是否可以更可读的一些,不然很难知道是重复 open 导致(我们也是试了很久才发现)。

那我们按照您建议处理,判断进程启动后不执行 cli open,直接走后续操作~

这是一个已知的cli行为变更问题。在HBuilderX 4.56+版本中,当HBuilderX已启动时再次执行cli open会触发RPC超时错误,这是设计变更而非bug。

解决方案:

  1. 判断HBuilderX是否已启动:
ps aux | grep HBuilderX
  1. 无需先启动HBuilderX,可以直接执行:
cli publish --platform APP --type appResources --project xxxx
回到顶部