Mac端Cordova build ios报错:无法复制acorn至自身子目录求解决
解决Cordova构建iOS时Acorn路径复制冲突的问题
我之前帮同事解决过几乎一模一样的问题,这个错误本质是路径循环导致的复制冲突——Cordova的构建脚本尝试把Acorn的可执行文件复制到它自己所在的目录下,自然就触发了报错。试试下面这几个方案,按顺序来大概率能解决:
清理依赖并重新安装
首先排除依赖安装混乱的问题:- 删除项目根目录的
node_modules文件夹:rm -rf node_modules - 强制清除npm缓存:
npm cache clean --force - 重新安装所有依赖:
npm install
完成后再尝试执行cordova build ios
- 删除项目根目录的
调整Acorn版本
部分旧版本的Acorn目录结构可能和Cordova的构建逻辑不兼容,试试升级或降级到稳定版本:- 升级到最新稳定版:
npm install acorn@latest - 或者指定一个经过验证的稳定版本(比如8.x系列):
npm install acorn@8.10.0
- 升级到最新稳定版:
检查并修改Cordova的复制配置
如果上面两步没用,可能是项目的复制规则出了问题:- 打开项目根目录的
config.xml,检查是否有<copy-files>或<resource-file>标签错误地指向了../acorn/bin/acorn路径,如果有,移除或调整这个规则。 - 也可以查看
platforms/ios/cordova/lib/copy-assets.js(或类似的复制脚本文件),看看脚本的路径匹配规则是否把Acorn的bin目录纳入了复制范围,修改规则排除这个路径即可。
- 打开项目根目录的
重新添加iOS平台
要是前面的方法都不奏效,可能是iOS平台的构建缓存或配置文件损坏了:- 先移除iOS平台:
cordova platform remove ios - 重新添加iOS平台:
cordova platform add ios - 再次执行构建命令:
cordova build ios
- 先移除iOS平台:
内容的提问来源于stack exchange,提问作者Jacek Wojcik
相关产品推荐
相关产品推荐

