Open jifangxia opened 4 months ago
你在 macOS Sonoma 14.5 上创建 React Native 项目时遇到 cannot execute binary file 的错误,这是由于 npx 下载的 react-native 可执行文件无法正确执行,通常是因为权限问题或者系统架构不匹配导致的。
解决问题的步骤:
清理 npx 缓存 npx 使用缓存机制来存储下载的包,缓存文件可能损坏,导致无法执行可执行文件。你可以尝试清理 npx 的缓存: npx clear-npx-cache 或者手动删除缓存目录: rm -rf /Users/admin/.npm/_npx 这样可以确保 npx 从头下载依赖,而不是使用损坏的缓存。
检查 Node.js 版本 确保你安装的 Node.js 版本符合 React Native 的要求。React Native 通常推荐使用 Node.js 14 及以上的版本。 检查当前 Node.js 版本: node -v 如果你的 Node.js 版本太低或者不兼容,建议升级 Node.js。你可以使用 nvm切换 Node.js 版本: nvm install --lts nvm use --lts
重新安装 react-native-cli 有时,直接使用 npx 下载并运行 react-native-cli 可能会遇到问题。你可以尝试全局安装 react-native-cli,然后创建项目: 先卸载本地或全局的 React Native CLI: npm uninstall -g react-native-cli 然后重新安装: npm install -g react-native-cli 创建项目: react-native init AwesomeProject1
确认系统架构(Apple Silicon 与 x86_64) 如果你使用的是 Apple Silicon(M1、M2)芯片,可能有一些工具是为 x86 架构构建的,因此需要在 Rosetta 模式下运行。 检查你当前的架构: uname -m 如果输出为 arm64,你使用的是 Apple Silicon。如果某些工具是为 x86_64 构建的,你可以尝试在 Rosetta 2 环境下运行终端。 通过 Rosetta 运行终端: 找到应用程序中的终端应用,右键点击,选择“获取信息(Get Info)”。 选中“使用 Rosetta 打开”,然后重新打开终端。 在 Rosetta 终端中尝试重新运行创建命令: npx react-native@latest init AwesomeProject1
检查文件权限 如果可执行文件的权限不正确,也可能导致此错误。可以尝试手动更改文件权限: chmod +x /Users/admin/.npm/_npx/dea611a43221eddd/node_modules/.bin/react-native 然后再尝试运行 npx 命令。
升级 npm 版本 npx 是 npm 的一部分,如果你的 npm 版本太旧,可能会导致执行错误。可以尝试更新 npm: npm install -g npm@latest 然后重新运行 npx 命令。
尝试 Yarn 如果 npx 的问题依然没有解决,可以尝试使用 yarn 来代替 npx 创建项目: 先全局安装 Yarn: npm install -g yarn 使用 Yarn 初始化项目: yarn create react-native-app AwesomeProject1
Mac OS sonoma 14.5
创建项目:npx react-native@latest init AwesomeProject1 输出: sh: /Users/admin/.npm/_npx/dea611a43221eddd/node_modules/.bin/react-native: cannot execute binary file