未初始化常量Sprockets::Engines (名称错误)。

4

我正在使用Ubuntu 18.04,Ruby 2.6.3和Rails 6。我正在开发一个新的Rails项目,但当我启动服务器时,出现以下错误:

> rails s

=> Booting Puma
=> Rails 6.0.2.1 application starting in development 
=> Run `rails server --help` for more startup options
Exiting
Traceback (most recent call last):
    [...]
    72: from ./bin/rails:3:in `<main>'
    71: from ./bin/rails:3:in `load'
    70: from /home/franck/code/BTC1M/app-test/bin/spring:15:in `<top (required)>'
    69: from /home/franck/.rbenv/versions/2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    68: from /home/franck/.rbenv/versions/2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    67: from /home/franck/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
    66: from /home/franck/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
[...]
5: from /home/franck/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/lazy_load_hooks.rb:69:in `block in execute_hook'
4: from /home/franck/.rvm/gems/ruby-2.6.3/gems/less-rails-2.6.0/lib/less/rails/railtie.rb:17:in `block in <class:Railtie>'
3: from /home/franck/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/active_support.rb:58:in `load_missing_constant'
2: from /home/franck/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/active_support.rb:79:in `rescue in load_missing_constant'
1: from /home/franck/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/active_support.rb:8:in `without_bootsnap_cache'
/home/franck/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/active_support.rb:79:in `block in load_missing_constant': uninitialized constant Sprockets::Engines (NameError)

我尝试通过以下步骤卸载并重新安装Rails和Ruby:

我尝试通过以下步骤卸载并重新安装Rails和Ruby:

rvm implode
rm -rf ~/.rvm
rm -rf ~/.rbenv
sudo apt install -y build-essential tklib zlib1g-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev libreadline-dev
sudo apt clean
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install 2.6.3
rbenv global 2.6.3
gem install rails

我还尝试了spring stop,并更新了sprockets和sprockets-rails:gem update(我的sprockets-rails版本是3.2.1),并在Gemfile.lock中更新了sprockets-rails版本:sprockets-rails(3.2.1)。我的sprockets版本是4.0.0。
我还在我的gemfile中加入了gem'sprockets',git:'git://github.com/rails/sprockets' + bundle install(如在这个主题中所说的那样:https://github.com/rails/sass-rails/issues/48),但它没有解决我的问题。
我仍然有同样的错误。我不明白发生了什么。有任何想法吗?
顺便问一下,为什么我有一个/home/franck/.rvm文件夹(我之前删除了它),因为我没用RVM而是用RBENV?
Github存储库在这里:https://github.com/BTC1M/app-test

尝试运行 spring stop 命令,或检查机器上是否有任何正在运行的 spring 进程并将其终止。 - arieljuod
这回答解决了您的问题吗?[如何从我的系统中删除RVM(Ruby Version Manager)?](https://dev59.com/-3A65IYBdhLWcg3w7DT8) - Thomas Koppensteiner
1个回答

1

尝试逐个删除那些可能不与rails > 5兼容的旧依赖项,然后再次打包:

  • gem 'less-rails-bootstrap'开始,该库最后提交时间为5年前,并且在错误堆栈中引用。

还要查看以下其他依赖项:

  • gem 'jquery-easing-rails' 最后提交时间为5年前
  • gem "font-awesome-rails" 最后提交时间为3年前

请注意,bootstrap-sassfont-awesome-rails不支持这些库的最新版本,可能需要一些技巧才能在Rails 6上运行,最好使用webpack与这些库一起使用,这是新标准(Sprocket不再默认处理JS,所有内容都在app/javascript中进行编译,由webpack进行处理)。

此外,您可能不再需要therubyracer(最后提交时间为3年前,存在许多最近的问题)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接