HBuilderX 4.87 无法正常读取 macOS 环境配置的解决方案

我的电脑配置是 macOS Sequoia 15.6.1(M2 芯片)。最近使用 HBuilderX 4.87 打包 APP 时出现卡住、无法正常打包的问题。本文给出解决方案。

隔了几个月,最近要用 uni-app 打包一下 APP。我像之前那样打开了 HBuilderX,更新并打包 Android APP,却发现提示我需要配置 Node.js。

我很奇怪,我都是用 fnm 管理 Node.js,几个项目 Node.js 用得好好的,没啥问题啊,为什么会这样呢?🤔

我百思不得其解,直到我打开了 HBuilderX 提示的 关联链接

Hbuilder X 从 4.41 版本开始调整 cli 项目使用本地的 node 执行编译,如果用户未安装并正确配置 Node.js 会警告报错。
目前只从 bash 中读取环境变量,需要确保配置到 bash 中

Bro,从 4.41 版本更新到 4.87 版本,还是不能从 macOS 10.15 开始默认使用的 zsh 读取环境变量,体验真是太差了。😅

我搜索了 DCloud 论坛里面,有好哥哥提到将 ~/.zshrc 里的内容复制粘贴到 ~/.bash_profile 就能用了。如果你感兴趣可以尝试一下这个方案,但我尝试时发现还是会卡住无法继续,HBuilderX 日志提示 fnm 不存在。

进一步地,如果我去掉了 ~/.bash_profile 里面的 fnm,只是按照官方指南那样设置 Node.js PATH,仍然没办法正常使用。

shell 复制代码
# HBuilderX
export PATH="$PATH:$HOME/Library/Application Support/fnm/aliases/default/bin"

# Android Studio
export ANDROID_HOME=$HOME/Library/Android/sdk
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_SDK_ROOT/emulator
export PATH=$PATH:$ANDROID_SDK_ROOT/tools
export PATH=$PATH:$ANDROID_SDK_ROOT/tools/bin
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools

# Java
alias use-java17='/usr/libexec/java_home -v 17 --exec java -version'
alias use-java8='/usr/libexec/java_home -v 1.8 --exec java -version'

直到我偶然设置了全局的 Node.js 版本,重启 HBuilderX,结果可以正常打包了!但如果我去掉 ~/.bash_profile 里面的 Node.js PATH,重启 HBuilderX,又没法正常打包了!

我综合几次实验,得出的结论是,~/.bash_profile 里面 Node.js PATH 只起到了一个欺骗 HBuilderX 的作用,并不会使用里面 PATH 对应的 Node.js,实际上使用的是 fnm 在全局设置的 Node.js。我完全无法理解这种事情,也不好说这是 fnm 的弊端,还是 HBuilderX 的缺陷 😱

如果你尝试好哥哥的方案无法正常运行,那可以尝试一下我的方案:

  1. 设置 ~/.bash_profile,如上所示;
  2. 切换到 ~ 目录下,运行一下 fnm use [打包项目所需的 Node.js]
  3. 重启 HBuilderX,打包 APP。

希望对你有所帮助!元旦快乐!

相关推荐
前端若水1 分钟前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Bigger11 分钟前
mini-cc:一个轻量级 AI 编程助手的诞生
前端·ai编程·claude
涵涵(互关)25 分钟前
Naive-ui树型选择器只显示根节点
前端·ui·vue
BY组态34 分钟前
Ricon组态系统最佳实践:从零开始构建物联网监控平台
前端·物联网·iot·web组态·组态
BY组态38 分钟前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·物联网·iot·web组态·组态
SoaringHeart40 分钟前
Flutter进阶:OverlayEntry 插入图层管理器 NOverlayZIndexManager
前端·flutter
放下华子我只抽RuiKe51 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
IT_陈寒2 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
idcu3 小时前
深入 Lyt.js 组件系统:L2 渲染引擎层的核心
前端·typescript
这是程序猿3 小时前
Spring Boot自动配置详解
java·大数据·前端