如何安装d3-rails gem?解决Rails 5.1.6找不到'd3'文件报错
解决Rails 5.1.6中d3-rails gem找不到d3文件的问题
我之前在Rails 5.x版本里折腾d3-rails的时候也碰到过这个找不到文件的坑,给你几个亲测有效的解决方向:
确认gem版本与Rails版本兼容
Rails 5.1.x对asset pipeline的处理有不少调整,建议锁定一个适配的d3-rails版本。在你的Gemfile里改成这样:gem 'd3-rails', '~> 4.13.0'然后跑
bundle install更新依赖,这个版本我在Rails 5.1.6里用过,没问题。检查asset pipeline的加载配置
如果你的项目还是用sprockets(没全转webpacker),得确保d3的文件被正确引入:- 打开
app/assets/javascripts/application.js,添加这行:
要是不行就试试完整路径//= require d3//= require d3/d3,有些版本的gem会把文件放在子目录里。 - 再检查
config/initializers/assets.rb,确保sprockets能扫描到gem的assets路径,添加:
d3-rails一般会把文件放在vendor目录下,得让sprockets知道这个路径。Rails.application.config.assets.paths << Rails.root.join('vendor', 'assets', 'javascripts')
- 打开
清缓存+重新预编译
Rails的asset缓存经常搞事情,先清掉旧缓存再重新编译:rails assets:clean rails assets:precompile然后重启服务器,再试试加载页面。
手动检查gem里的文件是否存在
有时候gem安装可能出问题,文件没拉全。先跑bundle show d3-rails找到gem的安装路径,然后进去看看app/assets/javascripts或者vendor/assets/javascripts里有没有d3.js或者d3.min.js。要是没有,就卸载重装:bundle uninstall d3-rails bundle install备选:直接用CDN引入
要是以上方法都搞不定,先换个思路跳过gem,直接在app/views/layouts/application.html.erb里加CDN链接:<script src="https://d3js.org/d3.v4.min.js"></script>这样能快速让项目跑起来,后续再慢慢排查gem的问题。
内容的提问来源于stack exchange,提问作者agiret
相关产品推荐
相关产品推荐

