rake assets:precompile выдает ошибку punc

Я пытаюсь предварительно скомпилировать свои активы для производства, но рельсы, похоже, не сотрудничают.

$ bundle exec rake assets:precompile
/home/drderp/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
Unexpected token punc, expected punc (line: 213, col: 13, pos: 5986)

Error
    at new JS_Parse_Error (<eval>:1720:22)
    at js_error (<eval>:1728:15)
    at croak (<eval>:2189:17)
    at token_error (<eval>:2196:17)
    at expect_token (<eval>:2209:17)
    at Object.expect (<eval>:2212:40)
    at Object.1 (<eval>:2763:38)
    at prog1 (<eval>:2770:28)
    at <eval>:2560:51
    at maybe_unary (<eval>:2665:27)
  (in /home/drderp/projects/p/app/assets/javascripts/application.js)

Tasks: TOP => assets:precompile:primary
(See full trace by running task with --trace)
rake aborted!
Command failed with status (1): [/home/drderp/.rvm/rubies/ruby-1.9.3-p194/b...]

Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

Это все содержимое application.js:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// Since javascript, no matter what order you load it in, executes in different order, it doesn't
// matter
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery

Версия Rails 3.2.8, работающая на Ruby 1.9.3.

изменить:

Вот bundle exec rake assets:precompile --trace, как и просили:

$ bundle exec rake assets:precompile --trace
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/home/drderp/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
Unexpected token punc, expected punc (line: 213, col: 13, pos: 5986)

Error
    at new JS_Parse_Error (<eval>:1720:22)
    at js_error (<eval>:1728:15)
    at croak (<eval>:2189:17)
    at token_error (<eval>:2196:17)
    at expect_token (<eval>:2209:17)
    at Object.expect (<eval>:2212:40)
    at Object.1 (<eval>:2763:38)
    at prog1 (<eval>:2770:28)
    at <eval>:2560:51
    at maybe_unary (<eval>:2665:27)
  (in /home/drderp/projects/p/app/assets/javascripts/application.js)
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb:34:in `rescue in block in eval'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb:28:in `block in eval'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb:80:in `block in lock'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.10.2/lib/v8/c/locker.rb:13:in `Locker'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb:78:in `lock'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb:27:in `eval'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb:19:in `exec'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/uglifier-1.3.0/lib/uglifier.rb:100:in `compile'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/compressors.rb:74:in `compress'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/processing.rb:265:in `block in js_compressor='
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/processor.rb:29:in `call'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/processor.rb:29:in `evaluate'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/tilt-1.3.3/lib/tilt/template.rb:76:in `render'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/context.rb:177:in `block in evaluate'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/context.rb:174:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/context.rb:174:in `evaluate'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/bundled_asset.rb:26:in `initialize'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:244:in `new'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:244:in `build_asset'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/index.rb:89:in `block in build_asset'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/caching.rb:19:in `cache_asset'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/index.rb:88:in `build_asset'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:163:in `find_asset'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/index.rb:56:in `find_asset'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/static_compiler.rb:23:in `block in compile'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:212:in `block in each_logical_path'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:200:in `block (2 levels) in each_file'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:190:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:190:in `each_entry'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:198:in `block in each_file'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:197:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:197:in `each_file'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/sprockets-2.1.3/lib/sprockets/base.rb:210:in `each_logical_path'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/static_compiler.rb:18:in `compile'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/assets.rake:56:in `internal_precompile'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/assets.rake:70:in `block (3 levels) in <top (required)>'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/home/drderp/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/assets.rake:60:in `block (3 levels) in <top (required)>'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/home/drderp/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin/rake:19:in `load'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin/rake:19:in `<main>'
Tasks: TOP => assets:precompile:primary
rake aborted!
Command failed with status (1): [/home/drderp/.rvm/rubies/ruby-1.9.3-p194/b...]
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/file_utils.rb:53:in `block in create_shell_runner'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `call'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `sh'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `sh'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/file_utils.rb:80:in `ruby'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `ruby'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/assets.rake:12:in `ruby_rake_task'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/home/drderp/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin/rake:19:in `load'
/home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin/rake:19:in `<main>'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
/home/drderp/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => assets:precompile

person Jeremy Rodi    schedule 25.09.2012    source источник
comment
Попробуйте запустить как bundle exec rake assets:precompile --trace... это может помочь найти где-то файл с плохой пунктуацией   -  person rossta    schedule 25.09.2012
comment
@rossta, обновил OP выводом команды.   -  person Jeremy Rodi    schedule 25.09.2012
comment
Какая версия jquery-rails находится в вашем Gemfile?   -  person rossta    schedule 25.09.2012
comment
Где-то в ваших файлах javascript есть синтаксическая ошибка. Попробуйте удалить/добавить jquery и/или любые другие строки в application.js (или другие файлы js, которые могут быть включены) и перезапустить компиляцию, чтобы посмотреть, сможете ли вы изолировать проблему.   -  person rossta    schedule 25.09.2012
comment
@rossta все содержимое моего файла application.js показано выше, и когда я удаляю require jquery, он не жалуется. Никаких других файлов не требуется.   -  person Jeremy Rodi    schedule 25.09.2012
comment
@rossta jquery-rails это версия 2.1.2   -  person Jeremy Rodi    schedule 25.09.2012
comment
У меня тоже есть эта проблема. Есть ли способ узнать, какой файл вызывает ошибку?   -  person MrTheWalrus    schedule 02.04.2013
comment
@MrTheWalrus в application.js удалите requires, пока ошибка не исчезнет, ​​я полагаю?   -  person Jeremy Rodi    schedule 02.04.2013
comment
В моем случае это был tagsinput.js, мне пришлось удалить из папки с ресурсами и вручную скопировать в общую папку, а затем добавить ‹script src=/tagsinput.js›, чтобы сослаться на него в моем представлении :(   -  person David Mauricio    schedule 27.05.2014


Ответы (10)


Более универсальный способ поиска проблемы в js-ассетах: Запускаем rails console и:

JS_PATH = "app/assets/javascripts/**/*.js"; 
Dir[JS_PATH].each do |file_name|
  puts "\n#{file_name}"
  puts Uglifier.compile(File.read(file_name))
end
person Sergey Reutskiy    schedule 06.07.2016
comment
JS_PATH = 'app/assets/javascripts/**/*.js' Dir[JS_PATH].each do |file| begin' Uglifier.compile(File.read(file))` rescue puts file end Легче читать, если у вас много файлов js - person Dania_es; 30.08.2016
comment
это спасло мой день - person Nicolas Garnil; 19.10.2016
comment
Спасибо, что сэкономили мое время на отладке этого! :) - person Alex Musayev; 14.01.2017
comment
изменение первой строки на JS_PATH = "app/assets/javascripts/**/*.js*" будет включать файлы .js.erb и т.п. - person Erica Tripp; 04.02.2017
comment
@erica Это не обязательно хорошая идея, так как Uglifier.compile ожидает чистый javascript, тогда как файлы .js.erb могут иметь встроенный рубин. - person Jeremy Rodi; 05.04.2017
comment
В итоге мне пришлось делать это несколько раз, поэтому я сделал однострочник: RAILS_ENV=whatever bundle exec rails runner 'Dir["app/assets/javascripts/**/*.js"].each {|file_name| puts "\n#{file_name}"; puts Uglifier.compile(File.read(file_name)) }' - person Nathan Wallace; 18.05.2017
comment
Я ТАК ТЕБЯ ЛЮБЛЮ - person Waclock; 07.06.2017
comment
Приятно знать @jeremy. В моем случае это сработало, но полезно знать, что это не надежное решение. - person Erica Tripp; 17.06.2017
comment
Это очень полезно. Спасибо - person Drew; 28.06.2017
comment
Этот ответ спас меня 3 раза за последние 3 года. Если бы я мог снова проголосовать, я бы это сделал. - person Jared Menard; 25.01.2018
comment
Жестокий ... в любом случае, чтобы выяснить, на какой строке происходит ошибка uglifier, если это файл erb? - person Meekohi; 02.07.2018
comment
Для тех, кто не может определить ТОЧНУЮ строку (строки), вызывающую проблему в файле (файлах), показанном с помощью решения Сергея, попробуйте jslint. .com и eslint.org/demo. Сначала я очистил свой код, используя первый, и, наконец, определил проблему, вызывающую сбой RAILS_ENV=production rake assets:precompile, с помощью второго. - person CFitz; 22.03.2019
comment
потрясающий ответ! спаси мою ночь! - person Patricio Jofre; 23.01.2020
comment
Это просто нарушение нормальной интерполяции строк JS. Я думаю, мне нужно загрузить и рассказать о конфигурации Babel или что-то в этом роде. - person Zia Ul Rehman Mughal; 23.01.2020
comment
как однострочник: JS_PATH = "app/assets/javascripts/**/*.js"; Dir[JS_PATH].each{ |file_name| puts "\n#{file_name}"; puts Uglifier.compile(File.read(file_name)) } - person Aryeh Beitz; 02.04.2020

У меня была такая же проблема. Откройте консоль Javascript в браузере и посмотрите, где ошибка. Я подозреваю (потому что это было решением моей проблемы), что в одном из ваших JS-файлов есть ошибка, и, скорее всего, какой бы JS-код вы ни написали, в нем использовался символ «>».

Удачи в поиске ошибок.

person Joseph Gill    schedule 08.11.2013
comment
Будьте здоровы. В моем случае у меня был динамический файл .js.erb. При компиляции ресурсов javascript интерпретировался так, как будто не было ENV['bla_bla'], дающего синтаксическую ошибку. :) - person tsikov; 13.10.2014
comment
В моем случае это был файл под app/assets/javascripts в геме, у которого не было расширения. - person mooreds; 07.04.2016

В моем случае я использовал синтаксис es6 ()=>{...} в файле js. Замена его на function(){...} устранила проблему.

person Ryo    schedule 27.01.2016
comment
Это было проблемой для меня. Похоже, что Uglifier задыхается от синтаксиса ES6. - person Daniel Bonnell; 13.06.2016
comment
У меня была аналогичная проблема, я использовал значение по умолчанию function(options = {}), кажется, я слишком долго кодировал в ES6;) - person Andrew K; 12.02.2017
comment
Это был именно мой случай, и я все еще хотел использовать синтаксис ES6. В итоге я использовал react_on_rails (не для React, просто чтобы использовать Webpack, чтобы продолжать наслаждаться ES2015+) - person elquimista; 19.08.2017

Это было ужасно; отсутствие ошибки javascript на моем локальном компьютере означает, что возникла проблема с компиляцией ресурсов.

Вот как я это решил.

Как было предложено в комментариях к аналогичному вопросу ExecJS::ProgramError: Unexpected token punc «(», ожидаемый punc «:» при запуске активов rake :precompile on production , я удалил uglifier (в production.rb, закомментируйте строку компрессора) и сжатие вообще (я пробовал с другими компрессорами; yui не дал много информации. замыкание, казалось, дало мне подсказку, но не помогло мало помогает)

Затем я сжал ресурсы локально, а затем отправил их в производство. (Для локального сжатия используйте RAILS_ENV=production rake assets:precompile )

Я запустил сервер, и именно тогда всплыли ошибки javascript. В основном это было ошибочное слияние файлов (в основном из-за чего-то закомментированного). Я избавился от этих строк и вернулся к производству. Все удалось.

Я вернул uglifier, удалил предварительно скомпилированные ресурсы под public/assets/ и вернул в производство.

Я надеюсь, что это поможет кому-то!

person Abdo    schedule 28.08.2015

Просто предупредите об этом, у меня была такая же проблема и что происходило, когда при предварительной компиляции ресурсов в производственной среде (и отправке в Heroku) несколько моих JS-файлов вставлялись с иностранными символами, по строкам...

<<<<<<<<HEAD

===========

>>>>>>(random alphanumeric key)

Я просто провел глобальный поиск в каталоге своего сайта по «‹‹», быстро нашел затронутые файлы и удалил эти термины — все работало нормально.

person thegreengiant    schedule 11.01.2015
comment
На самом деле это происходит, когда git выполняет слияние. Возможно, вы случайно начали слияние, опуская ветку, а затем не очистили результаты слияния. См. это (прокрутите вниз до раздела «Как представляются конфликты»). - person Jeremy Rodi; 11.01.2015

Необходимые детали:

Для нас это была странная мелочь, которая привела нас к фактической основной ошибке, а значит, и к решению.

У нас был uglifier gem v 4.1.x, и на момент написания последней версии была 4.2.x, мы обновили версию uglifier на всякий случай.

А произошло то, что эта новая версия фактически начала выдавать фактические местоположения файлов, в которых происходила ошибка компиляции. И когда мы знаем, откуда исходит ошибка, мы исправляем ее.

Дополнительные детали:

Фактическая проблема заключалась в том, что у нас было несколько файлов js.erb, и эти файлы запускали некоторый код rails для заполнения некоторых данных env, что-то вроде:

const config = {
  abc: <%= Figaro.env.abc %>,
  xyz: <%= Figaro.env.xyz %>
}

И ошибка, которую мы получали, была: Uglifier::Error: Unexpected token: punc (,).

Так что было очевидно, что по какой-то причине Фигаро не дает нам желаемых значений. Мы решили это исправить и проверили наше предположение, жестко запрограммировав случайные значения, которые успешно скомпилировали JS.

Выкладываю сюда, может кому поможет.

PS: Лучший ответ отличный, но по какой-то причине он выдал нам несколько случайных ошибок, связанных с jsx, вместо того, чтобы дать нам фактическая ошибка.

person Zia Ul Rehman Mughal    schedule 23.01.2020

По какой-то причине на Heroku, а также когда я запускал вышеупомянутый код, чтобы «испортить» javascript в консоли rails, он не сообщал номер строки ошибки!. Это просто ruby-оболочка для UglifyJS, которую вы можете использовать онлайн здесь https://skalman.github.io/UglifyJS-online/.

Так что я просто скопировал и вставил сюда оскорбительный файл js, и он сообщил номер строки. Очень просто.

person salza80    schedule 05.04.2017

Убедитесь, что новые файлы JS, которые вы добавили в свое приложение, включают плагины и другие файлы, добавленные Bower или чем-то подобным.

Попробуйте добавить один за другим, чтобы найти, в каком файле возникла проблема. В моем случае было в anchor-scroll.js. Когда я перешел на использование anchor-scroll.min, грабли работают нормально.

Измените это:

//= require anchor-scroll/scroll

За:

//= require anchor-scroll/scroll.min
person monteirobrena    schedule 14.04.2016

Моя проблема заключалась в двух успешных вызовах.

Сначала был mqtt onSuccess:

onSuccess() {
  console.log("mqtt connected")
};

что я решил с помощью:

onSuccess: function() {
  console.log("mqtt connected")
};

а вторым был успех «Аякса». Линтер покажет вам

Ошибка: ожидаемое сокращение метода

но все будет работать корректно.

person Radovan Skendzic    schedule 27.07.2016

"/home/drderp/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /home/drderp/.rvm/gems/ruby-1.9.3-p194@global/bin /rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets"

Между выделенной жирным шрифтом частью (между рубином, обратной косой чертой и домом) есть пробел.

Я не знаю, была ли это опечатка, но это может быть ваша проблема, потому что Rails не любит пробелы в именах каталогов. Переименуйте эту папку и попробуйте снова запустить свой код.

person skmichaelson    schedule 09.10.2013
comment
Должно быть место; дело не в имени файла, я запускаю исполняемый файл ruby ​​с абсолютным путем к файлу rake. - person Jeremy Rodi; 10.10.2013