Expo Prebuild执行报错:ENOENT文件或目录不存在问题求助
解决Expo Prebuild时的ENOENT文件复制错误(beep.mp3)
问题场景
仓库分支:mhiga701/safesteps-frontend@beta-test-start
执行npx expo prebuild(通过./prebuild.sh触发)时出现以下错误:
Error: [ios.xcodeproj]: withIosXcodeprojBaseMod: ENOENT: no such file or directory, copyfile '/assets/sounds/beep.mp3' -> '/Users/...mypaths.../safesteps-frontend/ios/SafeSteps/beep.mp3'
该错误导致预构建失败,阻碍了构建版本号更新及TestFlight提交流程。
可能原因
- 项目根目录下的
assets/sounds/beep.mp3文件实际不存在 - Expo配置文件(
app.json/app.config.js)中声明了该资源,但路径错误或文件已被删除 - 源文件/目标目录权限不足,导致无法读取或写入文件
解决步骤
1. 确认文件是否存在
进入项目根目录,执行命令检查目标文件:
ls -la assets/sounds/
如果输出中没有beep.mp3,要么从备份恢复该文件,要么移除配置中对它的引用。
2. 修正Expo资源配置
打开app.json或app.config.js,找到assets数组字段:
- 如果数组里有
"./assets/sounds/beep.mp3"但文件不存在,直接删除这条配置 - 如果路径写错(比如少写了
./或目录名错误),修正为正确的相对路径
3. 修复文件/目录权限
如果文件存在但仍报错,执行以下命令修复权限:
# 修复源文件读取权限 chmod -R 644 assets/sounds/beep.mp3 # 确保iOS目标目录存在且可写入 mkdir -p ios/SafeSteps && chmod -R 755 ios/
4. 清理缓存后重试
清理Expo缓存并重新安装依赖,再执行预构建:
# 清理预构建缓存 npx expo prebuild --clean # 重新安装依赖 rm -rf node_modules && npm install ./setup.sh ./prebuild.sh
内容的提问来源于stack exchange,提问作者rithvik
相关产品推荐
相关产品推荐

