简体   繁体   English

Heroku预编译资产失败

[英]Heroku Precompiling Assets Failed

My app is suddenly not working after an update. 更新后,我的应用程序突然无法运行。 Not sure what's going wrong. 不确定出了什么问题。 Basically, when I push to heroku, I get these errors: 基本上,当我推送到heroku时,我得到这些错误:

Precompiling assets failed, enabling runtime asset compilation
Injecting rails31_enable_runtime_asset_compilation

And a little higher up: 再高一点:

   rake aborted!
   Unexpected token: operator (>) (line: 19073, col: 9, pos: 605247)
   Error
   at new JS_Parse_Error (/tmp/execjs20121211-811-1z5vum.js:1720:22)
   at js_error (/tmp/execjs20121211-811-1z5vum.js:1728:15)
   at croak (/tmp/execjs20121211-811-1z5vum.js:2189:17)
   at token_error (/tmp/execjs20121211-811-1z5vum.js:2196:17)
   at unexpected (/tmp/execjs20121211-811-1z5vum.js:2202:17)
   at /tmp/execjs20121211-811-1z5vum.js:2580:17
   at maybe_unary (/tmp/execjs20121211-811-1z5vum.js:2665:27)
   at expr_op (/tmp/execjs20121211-811-1z5vum.js:2685:45)
   at expr_ops (/tmp/execjs20121211-811-1z5vum.js:2692:24)
   at maybe_conditional (/tmp/execjs20121211-811-1z5vum.js:2696:28)

When I actually load up the site ("We're sorry, but something went wrong"), and look at the heroku logs, I get this: 当我实际加载网站时(“我们很抱歉,但出现问题”),并查看heroku日志,我得到了这个:

Load path: /app
2012-12-11T23:18:13+00:00 app[web.1]:     8:     <%= stylesheet_link_tag "application", :media => "all" %>
2012-12-11T23:18:13+00:00 app[web.1]:   (in /app/app/assets/stylesheets/custom.css.scss)):
2012-12-11T23:18:13+00:00 app[web.1]:     6:     <link href='http://fonts.googleapis.com/css?family=Kreon' rel='stylesheet' type='text/css'>
2012-12-11T23:18:13+00:00 app[web.1]: ActionView::Template::Error (File to import not found or unreadable: bootstrap.
2012-12-11T23:18:13+00:00 app[web.1]:     5:     <title><%= full_title(yield(:title)) %></title>
2012-12-11T23:18:13+00:00 app[web.1]:     7:     <%= favicon_link_tag 'favicon.ico' %>
2012-12-11T23:18:13+00:00 app[web.1]:     10:     <%= csrf_meta_tags %>
2012-12-11T23:18:13+00:00 app[web.1]:   app/assets/stylesheets/custom.css.scss:1
2012-12-11T23:18:13+00:00 app[web.1]:     11:     <meta name="google-site-verification" content="idIPkgRBikSL9PCS4rVkkZfRjxYbPxNbyF6tVymBWbc" />
2012-12-11T23:18:13+00:00 app[web.1]: 
2012-12-11T23:18:13+00:00 app[web.1]: 

(Kreon is an additional font I added a while back that's been working fine. custom.css.scss is my main css file, and the first line is where I import bootstrap in a way that hasn't changed and has worked forever). (Kreon是一个额外的字体,我添加了一段时间后工作正常.custom.css.scss是我的主要css文件,第一行是我导入bootstrap的方式,没有改变,并且永远工作)。

I searched for how to deal with the "File to import not found or unreadable: bootstrap" error, and landed on this discussion and checked out the relevant heroku troubleshoot page , but changing assets.compile to true in my production.rb file led to the heroku push errors above, and the troubleshoot page didn't seem to have much relevant to my specific problem. 我搜索了如何处理“导入未找到或不可读的文件:bootstrap”错误,并着手进行此讨论并检查了相关的heroku疑难解答页面 ,但在我的production.rb文件中将assets.compile更改为true导致上面的heroku推送错误,并且疑难解答页面似乎与我的具体问题没有多大关系。 Not really sure what's going on here, so I'm just going to put a bunch of possibly relevant code below. 不太确定这里发生了什么,所以我将在下面提出一些可能相关的代码。

Gemfile 的Gemfile

source 'https://rubygems.org'

gem 'rails', '3.2.8'
gem 'googlecharts', :require => "gchart"
gem 'unicorn'
gem 'newrelic_rpm'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :production do
    gem 'pg'
end

group :development do
    gem 'sqlite3'
    gem 'rspec-rails', '2.11.0'
  gem 'guard-rspec', '1.2.1'
end

group :test do 
    gem 'capybara', '1.1.2'
  gem 'rb-fsevent', '0.9.1'
  gem 'growl', '1.0.3'
  gem 'guard-spork', '1.2.0'
  gem 'spork', '0.9.2'
  gem 'factory_girl_rails', '4.1.0'
end

gem 'annotate', '2.5.0'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'bootstrap-sass', '2.0.4'
  gem 'bcrypt-ruby', '3.0.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'roadie'
gem 'stripe', :git => 'https://github.com/stripe/stripe-ruby'
gem 'delayed_job_active_record'
gem 'daemons'
gem 'foreman'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'debugger'

production.rb production.rb

MyApp::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # Code is not reloaded between requests
  config.cache_classes = true

  # Force all access to the app over SSL, use Strict-Transport-Security, 
  # and use secure cookies.
  config.force_ssl = true

  # Full error reports are disabled and caching is turned on
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

  # Compress JavaScripts and CSS
  config.assets.compress = true

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = true

  # Generate digests for assets URLs
  config.assets.digest = true

  # Defaults to nil and saved in location specified by config.assets.prefix
  # config.assets.manifest = YOUR_PATH

  # Specifies the header that your server uses for sending files
  # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  # config.force_ssl = true

  # See everything in the log (default is :info)
  # config.log_level = :debug

  # Prepend all log lines with the following tags
  # config.log_tags = [ :subdomain, :uuid ]

  # Use a different logger for distributed setups
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)

  # Use a different cache store in production
  # config.cache_store = :mem_cache_store

  # Enable serving of images, stylesheets, and JavaScripts from an asset server
  # config.action_controller.asset_host = "http://assets.example.com"

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

  # Disable delivery errors, bad email addresses will be ignored
  # config.action_mailer.raise_delivery_errors = false

  # Enable threaded mode
  # config.threadsafe!

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation can not be found)
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners
  config.active_support.deprecation = :notify

  # Log the query plan for queries taking more than this (works
  # with SQLite, MySQL, and PostgreSQL)
  # config.active_record.auto_explain_threshold_in_seconds = 0.5
end

The line that's really throwing me is this one in my heroku push log: 真正抛弃我的那一行是我的heroku推送日志中的这一行:

Unexpected token: operator (>) (line: 19073, col: 9, pos: 605247)

The issue, is I have no idea what file to look in for this troublesome ">". 问题是,我不知道在这个麻烦的“>”中要查找哪个文件。 Any ideas how to read that line/col/pos nomenclature to find the actual offending code snippet? 任何想法如何阅读该行/ col / pos命名法来查找实际的违规代码片段?

Thanks. 谢谢。

STart with line 1 of app/assets/stylesheets/custom.css.scss and look for an errant > . 使用app/assets/stylesheets/custom.css.scss第1行进行STart并查找错误> Also look to make sure that application.scss is what you expect. 还要确保application.scss符合您的期望。

Also just rename custom.css.scss to just custom.scss Heck, that may do it. 也只是将custom.css.scss重命名为custom.scss Heck,可能会这样做。

The same thing happened to me as well, 同样的事情发生在我身上,
"Precompiling assets failed." “预编译资产失败了。” while pushing to heroku, 在推向heroku的同时
In my development environment I had an error in my css: 在我的开发环境中,我的css出错了:
"......... ” .........
cursor: pointer cursor:指针
color: #808080;" 颜色:#808080;“

missing the ";" 错过了“;” after the "pointer", the development environment didn't mind the error, but Heroku's PreCompile task did. 在“指针”之后,开发环境并不介意错误,但Heroku的PreCompile任务确实如此。

Some other Problems might be caused by duplicate named file, with "css" and "css.scss" suffixes. 其他一些问题可能是由重复的命名文件引起的,带有“css”和“css.scss”后缀。

Try this in the terminal: 在终端试试这个:

rake assets:precompile RAILS_ENV=production --trace

Better than trying to push on heroku. 比试图推动heroku更好。

I just had the same errors. 我只是犯了同样的错误。 The problem was: 问题是:

  • the config.secret_key of devise was commented 设计的config.secret_key被评论
  • syntax_error in a javascript file ( an "of" instead of an "in" in a for loop) javascript文件中的syntax_error(for循环中的“of”而不是“in”)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM