【问题标题】:bootstrap-sass: Undefined variable: "$baseLineHeight"bootstrap-sass:未定义变量:“$baseLineHeight”
【发布时间】:2012-04-12 13:02:33
【问题描述】:

我已使用 bootstrap-sass 将引导程序集成到我的应用程序中。该应用程序在我的本地计算机上运行良好,但是当我通过 capistrano 进行部署时,我收到此错误:

Undefined variable: "$baseLineHeight".
(in /var/www/CollegeSportsBlueBook/shared/bundle/ruby/1.9.1/gems/bootstrap-sass-2.0.1/vendor/assets/stylesheets/bootstrap/_accordion.scss)

当 capistrano 尝试运行 assets:precompile

我认为这个变量会引发错误,因为它是第一个尝试预编译的 scss 文件中的第一个变量。

加载不正确。有什么想法吗?

编辑

这里有完整的跟踪https://gist.github.com/2233071

编辑 2

将 application.rb 和 production.rb 添加到 gist

【问题讨论】:

  • 你能在你的本地机器上运行rake assets:precompile吗?
  • 是的,但我必须运行它并指定我在开发环境中,如果这很重要:RAILS_ENV=development bundle exec rake assets:precompile
  • 你改过config.assets.precompile吗?
  • @ThomasMcDonald - 我不这么认为。我在要点中添加了 application.rb 和 production.rb。如果您不介意检查它们并确保一切正常。谢谢。
  • @TylerDeWitt 是的,你已经改变了它。让我一起来回答。

标签: ruby-on-rails twitter-bootstrap bootstrap-sass


【解决方案1】:

您需要确保所有 css 的导入都以正确的顺序完成。要使变量起作用,它必须是要加载的前几个 css 文件之一。

这个帖子/答案应该对Proper SCSS Asset Structure in Rails有帮助

【讨论】:

    【解决方案2】:

    您已经编辑了 production.rb 文件,以便 Rails 将尝试预编译所有 CSS/JS 文件(第 48 行)。

    默认情况下,Rails 只会预编译 application.css(.scss)。通过将通配符选择器添加到config.assets.precompile,您要求Rails 预编译应用程序中的每个 css 资产,包括Sass 部分。当然,这可能不是您想要的行为。

    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
    config.assets.precompile += %w( *.css *.js )
    

    因此,Rails 将遍历每个 css 资源,编译它们。碰巧_accordion.css.scss 是它遇到的第一个 Bootstrap 资产,Rails 将首先尝试编译它。 _accordion 不是独立的,需要在它之前加载一些文件,因此会出现错误。无论如何都不应该将其编译为单独的文件。

    您需要更改您的config.assets.precompile 以仅添加除application.css/application.js 之外您需要的其他文件。

    【讨论】:

    • 这正是我的问题,您的解决方案解决了这个问题,并明确回答了我的问题所在。
    • 我在任何地方都没有config.assets.precompile += %w( *.css *.js ),并且遇到了完全相同的错误。任何帮助将不胜感激。
    • 谢谢。同样在这里。在 Rails 4.2.1 中,要修改的文件现在位于 /config/initializers/assets.rb
    【解决方案3】:

    最初我遇到了类似的问题 Sass::SyntaxError:未定义变量:“$alert-padding”。 assets.rb 文件中的这一行有问题

    Rails.application.config.assets.precompile += [/.*\.css/] 
    

    不知道为什么,但对我来说它有助于将其更改为这一行

    Rails.application.config.assets.precompile += [/^[-_a-zA-Z0-9]*\..*/]
    

    之后问题就解决了,一切都在生产中运行了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-29
      • 2012-10-30
      • 1970-01-01
      • 2016-12-19
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      相关资源
      最近更新 更多