M1芯片macOS BigSur11.4执行rails db:reset报Expected in: flat namespace错求助
解决方案
核心原因
该报错是grpc 1.38.0的预编译universal-darwin版本与macOS BigSur + Ruby 2.6.6的运行环境不兼容,预编译包内缺少对应系统架构的符号定义。
操作步骤
- 首先卸载当前已安装的grpc预编译包:
gem uninstall grpc -v 1.38.0
- 强制从源码编译安装对应版本的grpc:
gem install grpc -v 1.38.0 --platform=ruby
- 如果你使用Bundler管理项目依赖,执行以下命令全局配置grpc的编译规则,避免后续
bundle install时再次安装预编译版本:
bundle config build.grpc --platform=ruby # 配置完成后在项目目录下重新执行bundle install即可
备选方案
如果上述操作后问题仍然存在,可以直接升级grpc到已修复该兼容问题的版本:
- 修改项目Gemfile中grpc的版本约束到
>= 1.41.0 - 执行
bundle update grpc完成升级即可
内容的提问来源于stack exchange,提问作者Emilio Contreras
相关产品推荐
相关产品推荐

