You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EAS Build时expo-doctor执行失败,但本地运行正常求助

解决EAS Build安卓构建时expo: Permission denied错误

问题分析

你遇到的sh: 1: expo: Permission denied是EAS远程构建容器里执行expo命令时权限不足导致的,和本地npx expo-doctor正常的情况无关——毕竟构建环境是独立的容器,和本地配置不共享。之前升级expo/eas、添加推送图标可能触发了构建环境的权限校验逻辑,才出现这个问题。

可行解决方案

1. 检查package.json脚本

看看项目package.json里有没有自定义的postinstall或其他会修改文件权限的脚本,这类脚本可能在构建时错误修改了expo命令的权限,暂时注释掉再试构建。

2. 统一Node.js版本

在项目根目录新建.nvmrc文件,写入和本地一致的Node.js版本(比如v18.17.0),让构建环境使用相同版本的Node,避免版本差异引发的权限或依赖问题。

3. 清理远程构建缓存

执行命令清理EAS的远程缓存,旧缓存可能带权限冲突:

eas build:cache:clean

4. 检查资源文件权限

你添加了推送通知图标,要确保本地资源文件夹(比如android/app/src/main/res下的图标文件)权限正常,别设成chmod 700这种过严的权限——构建环境会同步这些权限,可能导致读取失败进而触发expo-doctor异常。

5. 强制用npx执行expo-doctor

在eas.json的development配置里,显式指定doctor命令用npx执行,绕开直接调用expo的权限问题:

{
  "build": {
    "development": {
      "android": {
        "buildType": "apk"
      },
      "doctor": {
        "command": "npx expo-doctor"
      }
    }
  }
}

6. 回退版本测试

如果是升级expo/eas后出现的问题,临时回退到之前能正常构建的版本,确认是不是新版本兼容性问题:

npm install expo@<你之前用的版本号>
npm install -g eas-cli@<你之前用的版本号>

另外,本地那个“已用PowerShell却提示推荐用PowerShell”的警告,和这个构建问题关联性不大,应该是expo-cli的小bug,不用管它。

内容的提问来源于stack exchange,提问作者theoduh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:02:43