Expo托管应用构建遇EACCES权限拒绝错误求助
Expo构建持续触发EACCES权限错误的解决方法
问题情况
- 托管式Expo应用运行正常,但执行发布构建时频繁出现EACCES权限错误,典型报错:
或类似EACCES: permission denied, unlink '/var/folders/kc/tcj3gswx2375d58ns86504400000gn/T/eas-cli-nodejs/f77fa97c-73a2-4eb2-bdf0-ad473a6170cf-shallow-clone/Library/Mobile Documents/.DS_Store'EACCES: permission denied mkdir '/path/to/file'的报错 - 已尝试删除临时文件夹、移除原项目并创建新Expo应用重新构建,问题仍存在
- 使用sudo执行构建命令会触发socket问题,试过的命令包括:
eas build -p android --profile preview npx eas build -p android --profile preview sudo npx eas build -p android --profile preview eas build -p android --profile preview --local sudo npx eas build -p android --profile preview --local npx eas build -p android --profile preview --local
解决步骤
1. 修复系统临时目录权限
EACCES错误大多源于/var/folders/下临时目录的权限归属异常,执行命令重置权限:
sudo chown -R $(whoami):staff /var/folders/
执行前请关闭所有占用该目录文件的进程。
2. 重置eas-cli的全局安装权限
如果eas-cli是全局安装的,权限问题可能出在这里,重新以当前用户身份安装:
# 卸载全局eas-cli npm uninstall -g eas-cli # 清理npm缓存 npm cache clean --force # 重新安装(不要加sudo) npm install -g eas-cli
用yarn的话替换为:
yarn global remove eas-cli yarn cache clean yarn global add eas-cli
3. 调整项目及本地构建缓存权限
使用--local构建时,确保项目目录和eas缓存目录权限正确:
# 重置项目目录权限 chown -R $(whoami):staff /path/to/your/expo-project # 清理eas本地缓存 rm -rf ~/.eas
4. 绝对不要用sudo执行构建命令
sudo会改变命令运行的用户上下文,引发socket连接、文件权限继承等问题,所有构建命令直接以当前用户身份执行即可。
5. 验证用户基础权限
执行以下命令测试当前用户对临时目录的读写权限:
touch /var/folders/$(whoami)/test-file && rm /var/folders/$(whoami)/test-file
如果命令报错,说明用户权限存在系统级问题,需要检查用户组配置或联系系统管理员。
内容的提问来源于stack exchange,提问作者Engr.Aftab Ufaq
相关产品推荐
相关产品推荐

