我已经创建了一个0.70.6版本的React-Native应用程序,经历了椰子的痛苦,以及在苹果硅芯片上开发的一切(M2)并使其工作,并在该项目上做了相当多的工作,然后(创建GitHub repo后)将其交给同事进行设计(他在一台M1上)...在他们的机器上也有很多问题,但最终还是让它工作了。现在,React-Native 0. 71. 0已经发布了,我跑过了升级它的所有步骤,让它在我的M2机器上工作了,一点问题都没有,但在推动和得到它在他们的机器上,我还没有能够找到一个解决方案的吊舱安装失败,由于爱马仕引擎无法加载,一对夫妇的错误弹出是,
[!] Failed to load 'hermes-engine' podspec:
[!] Invalid `hermes-engine.podspec` file: undefined method 'exists?' for FileClass.
我一整天都在想这意味着什么(我对React-Native......和一般的移动的开发还是个新手)而且我已经了解到“exists?”在某些ruby版本中已经被弃用了(我使用的是3.2.0)尽管它在我的机器上运行良好,所以我很困惑到底缺少了什么。我一直在使用chruby来安装ruby,唯一的区别是我的机器上有ruby版本2.7.5和2.7.7...但是当然,为了能够在我的机器上实际安装它们,我必须设置一些标志,我不认为它们会影响我的项目,因为bundle安装和pod安装使用3.2.0。
列出我在这些计算机上安装的所有内容:
- 捆扎机-〉
2.4.1
- 椰足类-〉
1.11.3
- Ruby-〉
3.2.0
- 节点-〉
18.13.0
- xcode -〉
14.2
(使用命令行工具)
另一个错误报告,如果它是有用的:
Command `pod install` failed.
└─ Cause: Failed to load 'hermes-engine' podspec:
[!] Invalid `hermes-engine.podspec` file: undefined method `exists?' for File:Class.
# from /Users/<user>/projects/<app_dir>/node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec:46
# -------------------------------------------
# source[:http] = "file://#{destination_path}"
> elsif File.exists?(hermestag_file) && isInCI
# Pod::UI.puts '[Hermes] Detected that you are on a React Native release branch, building Hermes from source but fetched from tag...'.yellow if Object.const_defined?("Pod::UI")
# -------------------------------------------
如果有任何信息,我需要包括为清晰,我会更新这篇文章作为必要的。
- 我尝试删除Pod文件,然后安装Pod...同样的错误
- 删除了Podfile.lock、缓存清理和删除Pod...相同错误
- 正在删除节点模块/
npm cache clean --force && npm install
- 然后执行
npx pod-install
,希望让节点处理事情...同样的错误 - 运行
pod deintegrate
和pod安装......很可怕,东西坏了,所以恢复了,回到了原点
今天早些时候我还尝试了其他一些东西,但我记不起来了,它们都回家了,所以我无法访问我运行的所有命令,但这些是最新的,在我有更清晰的认识之前,我将尝试获取那些需要设置的标志,以安装ruby的旧版本,看看是否有任何效果
最后一个提到,虽然,我们最近也得到了一个M1的Mac Mini,我跑了所有的步骤,让项目的工作...结束了在相同的车辙作为其他M1,但再次,将尝试这些LD_FLAGS或任何它可能是和更新此线程,如果这是什么修复问题
通过查看与这些问题相关的旧问题,人们发现了使用-x86_64命令的解决方案,而且我已经成功地做到了这一点,因为维护人员发布了支持arm 64的新版本,但是如果我在任何地方需要它,那就这样吧,我会尽我所能
1条答案
按热度按时间h7appiyu1#
不需要安装其他版本的ruby或任何东西,我让它通过做一些我觉得很脏的事情来安装hermes-engine pod...这就是进入它提到的文件,删除
exists?
中的“s”,这样它就只显示exist?
,然后我还将cocopods从1.11.3
降级为1.11.2
,并查看.podspec文件是如何布局的,它有条件地加载引擎,首先查看机器上是否下载了,然后一旦发现没有下载,它就最终用现有条件找到了问题代码......因此,它下载了所有内容,运行良好,我能够在Mac mini上构建和运行我的应用程序......但在另一台m1机器上尝试相同步骤时,我得到了一个 * 非常有用的错误 * --Oh no, an error occured
...完美,现在我怀疑我所做的这些更改是否会影响M2 pod命令如果在接下来的几天里没有更好的答案,我会假设这是最好的修复方法,直到react-native将他们的ruby版本升级到
3.2.0
,经过进一步的挖掘......这正是删除此exists?
文件方法的版本但我仍然希望其他使用M1 MacBook的人在React-Native 0.71.0的稳定版本上遇到这些问题时能提供反馈