HBuilderX 4.87 无法正常读取 macOS 环境配置的解决方案
隔了几个月,最近要用 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,仍然没办法正常使用。
# 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 的缺陷 😱
如果你尝试好哥哥的方案无法正常运行,那可以尝试一下我的方案:
- 设置
~/.bash_profile,如上所示; - 切换到
~目录下,运行一下fnm use [打包项目所需的 Node.js]; - 重启 HBuilderX,打包 APP。
希望对你有所帮助!