【问题标题】:How to fix this error : You must provide a Middleman::Extension or a block that returns a Middleman::Extension (RuntimeError)?如何修复此错误:您必须提供 Middleman::Extension 或返回 Middleman::Extension (RuntimeError) 的块?
【发布时间】:2016-02-14 23:06:27
【问题描述】:

我是 Middleman 和 Ruby 的新手。我已经先安装了rvm:

command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
\curl -L https://get.rvm.io | bash -s stable --ruby

我在 PATH 中添加了 ~/.rvm/bin,然后使用 rvm 安装了 Ruby:

rvm install ruby
rvm --default use ruby-2.2.1

然后我安装了 Middleman 并创建了一个新项目:

gem install middleman
cd ~/Documents/Web
middleman new my_project
cd my_project

我安装了 middleman-bower:

gem install middleman-bower

我在 Gemfile 中添加了:

gem 'middleman-bower'

在 config.rb 中:

activate :bower
sprockets.append_path File.join "#{root}", "bower_components"

然后运行:

bundle install

并尝试了以下测试:

middleman build

然后我得到以下错误:

/home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-core-4.1.1/lib/middleman-core/extensions.rb:68:in `register': You must provide a Middleman::Extension or a block that returns a Middleman::Extension (RuntimeError)
    from /home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-bower-1.0.2/lib/middleman/bower.rb:21:in `<module:Bower>'
    from /home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-bower-1.0.2/lib/middleman/bower.rb:5:in `<module:Middleman>'
    from /home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-bower-1.0.2/lib/middleman/bower.rb:4:in `<top (required)>'
    from /home/alain/.rvm/gems/ruby-2.2.1@global/gems/bundler-1.8.4/lib/bundler/runtime.rb:85:in `require'
    from /home/alain/.rvm/gems/ruby-2.2.1@global/gems/bundler-1.8.4/lib/bundler/runtime.rb:85:in `rescue in block in require'
    from /home/alain/.rvm/gems/ruby-2.2.1@global/gems/bundler-1.8.4/lib/bundler/runtime.rb:68:in `block in require'
    from /home/alain/.rvm/gems/ruby-2.2.1@global/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `each'
    from /home/alain/.rvm/gems/ruby-2.2.1@global/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `require'
    from /home/alain/.rvm/gems/ruby-2.2.1@global/gems/bundler-1.8.4/lib/bundler.rb:134:in `require'
    from /home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-core-4.1.1/lib/middleman-core/load_paths.rb:33:in `setup_bundler'
    from /home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-core-4.1.1/lib/middleman-core/load_paths.rb:15:in `setup_load_paths'
    from /home/alain/.rvm/gems/ruby-2.2.1/gems/middleman-cli-4.1.1/bin/middleman:10:in `<top (required)>'
    from /home/alain/.rvm/gems/ruby-2.2.1/bin/middleman:23:in `load'
    from /home/alain/.rvm/gems/ruby-2.2.1/bin/middleman:23:in `<main>'
    from /home/alain/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
    from /home/alain/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'

谷歌没有帮助。奇怪的是没有 bower 可执行文件。我当时试了:

gem install bower

但它没有任何改变,即使我注释了 config.rb 的最后两行:

page '/*.xml', layout: false
page '/*.json', layout: false
page '/*.txt', layout: false
configure :development do
  activate :livereload
end
# add bower support
activate :bower
sprockets.append_path File.join "#{root}", "bower_components"

有什么想法吗?

编辑:如果我删除 rvm 文件夹和中间人项目,然后重做除了 bower 之外的所有内容,一切都很好。所以我的问题看起来像如何正确安装凉亭

编辑:我应该说这也是我的第一个 node.js 设置!以下允许使用节点安装程序安装 bower:

apt-get install npm
npm install -g bower

但问题依旧!

我也试过this wrapping solution,但还是没有进展:

after_configuration do
  sprockets.append_path File.join root.to_s, "bower_components"
end

【问题讨论】:

    标签: ruby bower middleman


    【解决方案1】:

    我遇到了同样的问题,但我使用的是中间人 v4,它不支持链轮。 我通过阅读这篇文章发现了这一点:https://github.com/middleman/middleman/issues/890

    在中间商网站上,他们还提到 (https://middlemanapp.com/basics/upgrade-v4/#external-tools) 他们移除了链轮。

    首先我在 Gemfile 中添加了这个 sprockets gem 版本:

    gem "middleman-sprockets", "~> 4.0.0.rc"
    

    然后我在我的 config.rb 文件中添加了这行代码。

    import_path File.expand_path('bower_components', app.root)
    

    最后我在终端跑了:

    bundle install
    

    它从那里开始对我有用。

    还应该提到我没有像你那样使用“middleman-bower” gem,我手动安装了 bower。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2019-10-21
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      相关资源
      最近更新 更多