uni-app cli 命令行开发,用 HBX编译,在M1芯片上报错

uni-app cli 命令行开发,用 HBX编译,在M1芯片上报错

3 回复

该问题我已经解决 参考 https://ask.dcloud.net.cn/question/145281

更多关于uni-app cli 命令行开发,用 HBX编译,在M1芯片上报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


同问,我也是这个问题。哪怕我项目建立好了,上传到git仓库,再从仓库拉到其他目录。再次运行npm install 项目使用面板的运行也报上面的错误,但如果使用命令行, npm run dev:h5可以,但是我要做的是app

在使用 uni-app CLI 命令行开发时,如果你在 M1 芯片的 Mac 上使用 HBuilderX(HBX)编译时遇到报错,可能是由于 M1 芯片的架构(ARM64)与某些依赖库或工具链的兼容性问题导致的。以下是一些常见的解决方案和排查步骤:


1. 确保 HBuilderX 和 Node.js 兼容 M1 芯片

  • HBuilderX:确保你使用的是支持 M1 芯片的版本。可以从 HBuilderX 官网 下载最新版本。
  • Node.js:确保你安装的是兼容 M1 芯片的 Node.js 版本(ARM64 架构)。可以通过以下命令检查:
    node -p "process.arch"
    
    如果输出是 arm64,则说明 Node.js 是兼容 M1 的。

2. 使用 Rosetta 2 运行终端

如果某些工具链或依赖库不支持 ARM64 架构,可以尝试通过 Rosetta 2 运行终端:

  • 打开 Finder,进入 应用程序 > 实用工具
  • 找到 终端,右键点击并选择 获取信息
  • 勾选 使用 Rosetta 打开
  • 重新打开终端,运行你的 uni-app 项目。

3. 检查依赖库的兼容性

某些依赖库可能不支持 M1 芯片。可以尝试以下步骤:

  • 删除 node_modulespackage-lock.json
    rm -rf node_modules package-lock.json
    
  • 重新安装依赖:
    npm install
    
  • 如果仍然报错,可以尝试使用 npm rebuild 重新编译依赖:
    npm rebuild
    

4. 使用特定版本的 Node.js

某些版本的 Node.js 在 M1 芯片上可能存在兼容性问题。可以尝试使用以下版本:

  • Node.js 16.x 或更高版本(推荐)。
  • 使用 nvm 管理 Node.js 版本:
    nvm install 16
    nvm use 16
    

5. 检查 HBuilderX 的配置

  • 确保 HBuilderX 的 CLI 工具已正确安装。可以在 HBuilderX 中打开 运行 > 运行到终端,检查是否能够正常编译。
  • 如果使用自定义的 CLI 工具链,确保其兼容 M1 芯片。

6. 查看具体报错信息

如果以上方法无法解决问题,请提供具体的报错信息,以便进一步分析。常见的报错可能包括:

  • 依赖库编译失败。
  • 工具链不支持 ARM64 架构。
  • 权限问题。

7. 使用 Docker 或虚拟机

如果问题仍然无法解决,可以考虑使用 Docker 或虚拟机(如 Parallels Desktop)运行 x86 环境,以规避 M1 芯片的兼容性问题。


示例:常见报错及解决方案

报错:Error: Cannot find module 'xxx'

  • 解决方案:删除 node_modules 并重新安装依赖。

报错:gyp ERR! stack Error:makefailed with exit code: 2

  • 解决方案:确保已安装 Xcode 命令行工具:
    xcode-select --install
回到顶部