【问题标题】:Can't deploy Rails app to Heroku due to scss由于 scss,无法将 Rails 应用程序部署到 Heroku
【发布时间】:2017-12-11 17:38:52
【问题描述】:

我在将 Ruby 项目部署到 Heroku 时遇到问题。我四处寻找,但没有找到解决方案。我的错误是这样的:

remote:        Sass::SyntaxError: Invalid CSS after "...able_background": expected ")", was ": #808080,"
remote:        (in /tmp/build_4a9e512f14d76b318d2a93f5bcb4db07/app/assets/stylesheets/sass/admintable.scss:2)
remote:        /tmp/build_4a9e512f14d76b318d2a93f5bcb4db07/app/assets/stylesheets/sass/admintable.scss:2

它所指的我的 scss 代码在第二行:

$admin_table_colors:(
    admin_table_background: #808080,
    admin_table_header_background: #FF6347,
    admin_table_header_font: orange,
    admin_table_data_background: #808080
);

我的 gem 文件:

source 'https://rubygems.org'

gem 'rails', '4.2'
gem 'bcrypt', '3.1.11'
gem 'sass-rails', '4.0.2'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'devise'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'omniauth'
gem 'omniauth-facebook'
gem 'turbolinks'
gem "pundit"
gem "tzinfo-data"
gem 'lodash-rails'
group :production do
  gem 'pg'
end

group :test, :development do
  gem "rspec-rails"
  gem "capybara"
  gem "launchy"
  gem "rack_session_access"
  gem "selenium-webdriver"
  gem "better_errors"
  gem "factory_girl_rails"
  gem "simplecov"
  gem "database_cleaner"
  gem "pry"
  gem "sqlite3"
  gem "guard-rspec", require: false
  gem "thin"
  gem "dotenv-rails"
end

gem "bootstrap-sass", "~> 3.1.1"
gem "faker"
gem "friendly_id"

在我的环境生产文件中,我有这个设置:

config.assets.compile = true

我没有 .css 文件,只有 .scss。我应该将它们转换为 css 并删除我的 scss 文件以进行部署吗?也许我的宝石版本不合适?任何能够消除该错误的见解都会很棒。

【问题讨论】:

    标签: ruby-on-rails heroku sass


    【解决方案1】:

    您的错误信息说明了一切。 app/assets/stylesheets/sass/admintable.scss 的第 2 行出现 CSS 语法错误。

    确保那里的 CSS 有效。您可能可以在本地进行测试,以验证您已解决 rails assets:precompile 的问题。

    【讨论】:

    • 是的,我在我的问题中编写了 scss 代码,heroku 将其指出为错误,并且至少在 scss 中没有错误。我应该说清楚的。 :)
    • 发布app/assets/stylesheets/sass/admintable.scss的前几行
    • $admin_table_colors:( admin_table_background: #808080, admin_table_header_background: #FF6347, admin_table_header_font: 橙色, admin_table_data_background: #808080 );
    • 当你rails assets:precompile时,你在本地得到同样的错误吗?
    • 我对整个 rails 配置有点陌生,话虽如此,我试图在终端中运行该命令,但出现此错误错误:无法识别命令“资产:预编译”。
    【解决方案2】:

    试试下面的代码:

    config/environments/production.rb

    config.assets.compile = true
    

    然后运行命令:

    RAILS_ENV=production rake assets:clean
    
    RAILS_ENV=production rake assets:precompile
    

    然后将所有编译文件和清单文件推送到heroku。

    【讨论】:

    • 在我的 scss 文件中有一个 css 错误,就 scss 而言,这对我来说似乎没有错误。 Sass::SyntaxError: Invalid CSS after " nav_background": expected ")", was ": #FF6347," (in /assets/stylesheets/sass/dropdown_menu.scss:2) 我的代码的前几行是$navcolors: ( nav_background: #FF6347, nav_font: orange, nav_hover: black, nav_active: orange, search_hover: black, search_active: orange )
    【解决方案3】:

    我找到了解决问题的方法。虽然我相信我的 scss 代码是正确的,但预编译部分存在问题。我不得不在我的所有 scss 文件中更改我的地图代码,其中一个示例是此代码:

    $admin_table_colors:(
        admin_table_background: #808080,
        admin_table_header_background: #FF6347,
        admin_table_header_font: orange,
        admin_table_data_background: #808080
    );
    

    我不得不把它改成:

    $admin_table_colors:(
        'admin_table_background' #808080,
        'admin_table_header_background' #FF6347,
        'admin_table_header_font' orange,
        'admin_table_data_background' #808080
    );
    

    然后我不得不改变我的地图获取。我以前有这些地图:

    map-get($map: $admin_table_colors, $key: admin_table_background);
    

    然后改成:

    map-get($admin_table_colors, 'admin_table_background');
    

    我已经部署了它,但是我的网站没有加载,我不知道这是否与该更改有关或其他原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2014-07-16
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      相关资源
      最近更新 更多