You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换Rails项目执行assets:precompile时遇i18n加载错误

解决rails assets:precompile中的i18n/core_ext/hash加载错误

针对你遇到的问题,以下是具体的排查和解决步骤:

1. 锁定i18n到兼容的具体版本

i18n/core_ext/hash文件在i18n 1.10.0及以上版本中被移除,而chewy-7.1.0依赖这个旧文件结构。尽管你的Gemfile指定了>=0.7, <2,bundler可能会拉取最新的兼容版本(比如1.10+),导致加载失败。

修改Gemfile,指定一个兼容的i18n版本:

gem 'i18n', '~> 1.9.1'

执行bundle install更新依赖后,重新运行rails assets:precompile。

2. 确认chewy的依赖兼容性

chewy-7.1.0对Rails 6.0和Ruby 2.7.x的环境,要求的i18n版本上限低于1.10。你可以通过以下命令查看chewy的依赖要求:

bundle info chewy

根据输出的依赖信息,调整Gemfile中的i18n版本范围,确保两者兼容。

3. 清理依赖缓存解决切换项目的冲突

跨项目切换后,bundler缓存可能残留不兼容的gem版本,执行以下操作清理:

  • 清理全局未使用的gem:bundle clean --force
  • 删除项目本地bundle缓存:rm -rf vendor/bundle
  • 重新安装依赖:bundle install

4. 解决net-protocol重复定义警告

这个警告由gem版本冲突导致,虽然不直接引发编译失败,但会干扰环境排查。在Gemfile中锁定net-protocol版本:

gem 'net-protocol', '~> 0.1.3'

执行bundle update net-protocol即可消除警告。

5. 检查项目中的手动i18n引用

查看项目配置文件(如config/application.rb、config/environments/*.rb)或初始化脚本,确认是否有手动require 'i18n/core_ext/hash'的代码。如果有,注释掉并替换为i18n 1.9.x及以下版本的可用方法,或调整为兼容新版i18n的实现。

内容的提问来源于stack exchange,提问作者Burhan Gardezi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:57:19