rake aset: prakompilasi memberikan kesalahan punc

Saya mencoba mengkompilasi aset saya untuk produksi, tetapi Rails sepertinya tidak mau bekerja sama.

$ 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)

Ini keseluruhan isi 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 versi 3.2.8, berjalan pada Ruby 1.9.3.

sunting:

Ini bundle exec rake assets:precompile --trace, seperti yang diminta:

$ 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 sumber
comment
Coba jalankan sebagai bundle exec rake assets:precompile --trace ... ini mungkin membantu mengungkap file dengan tanda baca buruk di suatu tempat   -  person rossta    schedule 25.09.2012
comment
@rossta, perbarui OP dengan output perintah.   -  person Jeremy Rodi    schedule 25.09.2012
comment
Versi jquery-rails apa yang ada di Gemfile Anda?   -  person rossta    schedule 25.09.2012
comment
Ada kesalahan sintaksis di suatu tempat di file javascript Anda. Coba hapus/tambahkan jquery dan/atau baris lain di application.js (atau file js lain yang mungkin disertakan) dan jalankan kembali kompilasi untuk melihat apakah Anda dapat mengisolasi masalahnya.   -  person rossta    schedule 25.09.2012
comment
@rossta seluruh konten file application.js saya ditampilkan di atas, dan ketika saya menghapus require jquery, tidak ada keluhan. Tidak ada file lain yang diperlukan.   -  person Jeremy Rodi    schedule 25.09.2012
comment
@rossta jquery-rails adalah versi 2.1.2   -  person Jeremy Rodi    schedule 25.09.2012
comment
Saya punya masalah ini juga. Apakah ada cara untuk mengetahui file mana yang menghasilkan kesalahan?   -  person MrTheWalrus    schedule 02.04.2013
comment
@MrTheWalrus di application.js, hapus requires sampai kesalahannya hilang, ya?   -  person Jeremy Rodi    schedule 02.04.2013
comment
Dalam kasus saya itu adalah taginput.js , saya harus menghapus dari folder aset dan menyalin secara manual ke folder publik, lalu menambahkan ‹skrip src=/tagsinput.js› untuk referensi dalam pandangan saya :(   -  person David Mauricio    schedule 27.05.2014


Jawaban (10)


Cara yang lebih universal untuk menemukan masalah di js-assets: Jalankan rails console dan:

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 Lebih mudah dibaca jika Anda memiliki banyak file js - person Dania_es; 30.08.2016
comment
ini menyelamatkan hariku - person Nicolas Garnil; 19.10.2016
comment
Terima kasih telah menghemat waktu saya untuk men-debug ini! :) - person Alex Musayev; 14.01.2017
comment
mengubah baris pertama menjadi JS_PATH = "app/assets/javascripts/**/*.js*" akan menyertakan file .js.erb dan sejenisnya - person Erica Tripp; 04.02.2017
comment
@erica Itu belum tentu merupakan ide bagus, karena Uglifier.compile mengharapkan javascript murni, sedangkan file .js.erb mungkin telah menyematkan Ruby di dalamnya. - person Jeremy Rodi; 05.04.2017
comment
Saya akhirnya harus melakukan ini berkali-kali, jadi saya membuat satu kalimat: 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
AKU SANGAT MENCINTAIMU - person Waclock; 07.06.2017
comment
Senang mengetahuinya @jeremy. Ini berhasil dalam contoh saya, tetapi akan sangat membantu untuk mengetahui bahwa ini bukanlah solusi yang aman dari kegagalan. - person Erica Tripp; 17.06.2017
comment
Ini sangat berguna. Terima kasih - person Drew; 28.06.2017
comment
Jawaban ini telah menyelamatkan saya 3 kali berbeda selama 3 tahun terakhir. Jika saya dapat memberikan suara positif lagi, maka saya akan melakukannya. - person Jared Menard; 25.01.2018
comment
Brutal... lagi pula untuk mencari tahu di baris mana kesalahan uglifier terjadi jika itu file erb? - person Meekohi; 02.07.2018
comment
Bagi siapa pun yang tidak dapat mengidentifikasi baris PERSIS yang menyebabkan masalah pada file yang ditampilkan melalui solusi Sergey, coba jslint .com dan eslint.org/demo. Saya pertama kali membersihkan kode saya menggunakan yang pertama, dan akhirnya mengidentifikasi masalah yang menyebabkan RAILS_ENV=production rake assets:precompile menerobos yang terakhir. - person CFitz; 22.03.2019
comment
jawaban yang luar biasa! selamatkan malamku! - person Patricio Jofre; 23.01.2020
comment
Itu hanya melanggar interpolasi string JS normal. Saya rasa saya perlu memuat dan menceritakan tentang konfigurasi babel atau semacamnya. - person Zia Ul Rehman Mughal; 23.01.2020
comment
sebagai satu kalimat: 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

Saya memiliki masalah yang sama. Buka konsol Javascript Anda di browser dan lihat di mana kesalahannya. Saya curiga (karena ini adalah solusi untuk masalah saya), salah satu file JS Anda mengalami kesalahan dan kemungkinan besar JS apa pun yang Anda tulis menggunakan simbol ">".

Selamat mencoba kesalahan berburu.

person Joseph Gill    schedule 08.11.2013
comment
Diberkatilah Anda. Kasus saya adalah saya memiliki file .js.erb dinamis. Saat mengkompilasi aset, javascript ditafsirkan seolah-olah tidak ada ENV['bla_bla'] yang memberikan kesalahan sintaksis. :) - person tsikov; 13.10.2014
comment
Dalam kasus saya itu adalah file di bawah app/assets/javascripts dalam permata yang tidak memiliki ekstensi. - person mooreds; 07.04.2016

Dalam kasus saya, saya menggunakan sintaks es6 ()=>{...} di file js. Menggantinya dengan function(){...} memperbaiki masalah.

person Ryo    schedule 27.01.2016
comment
Ini adalah masalah bagi saya. Sepertinya Uglifier tersedak sintaks ES6. - person Daniel Bonnell; 13.06.2016
comment
Saya memiliki masalah serupa, saya menggunakan nilai default function(options = {}), sepertinya saya sudah terlalu lama mengkode di ES6;) - person Andrew K; 12.02.2017
comment
Ini persisnya kasus saya dan saya masih ingin menggunakan sintaks ES6. Saya akhirnya menggunakan react_on_rails (bukan untuk React, hanya menggunakan Webpack agar tetap menikmati ES2015+) - person elquimista; 19.08.2017

Ini sungguh mengerikan; tidak ada kesalahan javascript di komputer lokal saya berarti ada masalah dengan kompilasi aset.

Inilah cara saya menyelesaikannya.

Seperti yang disarankan dalam komentar untuk pertanyaan serupa ExecJS::ProgramError: Token punc tak terduga «(», punc yang diharapkan «:» saat menjalankan aset rake :precompile pada produksi , saya menghapus uglifier (di production.rb, mengomentari baris kompresor) dan kompresi sekaligus. (Saya telah mencoba dengan kompresor lain; yui tidak memberikan banyak informasi. penutupan sepertinya memberi saya petunjuk tetapi tidak tidak banyak membantu)

Saya kemudian mengompres aset secara lokal, lalu mendorongnya ke produksi. (Untuk mengompres secara lokal, gunakan RAILS_ENV=production rake assets:precompile )

Saya menjalankan di server dan saat itulah kesalahan javascript muncul. Itu pada dasarnya adalah penggabungan file yang salah (terutama karena sesuatu yang dikomentari). Saya menyingkirkan garis-garis itu dan kembali ke produksi. Semuanya berhasil.

Saya membawa kembali uglifier, menghapus aset yang telah dikompilasi sebelumnya di bawah public/assets/ dan mendorong kembali ke produksi.

Saya harap ini membantu seseorang!

person Abdo    schedule 28.08.2015

Sekadar mengetahui hal ini, saya memiliki masalah yang sama dan apa yang terjadi, ketika prakompilasi aset di lingkungan produksi (dan mendorong ke Heroku) beberapa file JS saya dimasukkan dengan karakter asing, seperti...

<<<<<<<<HEAD

===========

>>>>>>(random alphanumeric key)

Saya baru saja menjalankan pencarian global di direktori situs saya untuk "‹‹" dan dengan cepat menemukan file yang terpengaruh & menghapus istilah-istilah ini - semuanya berfungsi dengan baik.

person thegreengiant    schedule 11.01.2015
comment
Ini sebenarnya yang terjadi ketika git melakukan penggabungan. Anda mungkin secara tidak sengaja memulai penggabungan saat merobohkan cabang, lalu tidak membersihkan hasil penggabungan. Lihat ini (gulir ke bawah ke Bagaimana Konflik Disajikan). - person Jeremy Rodi; 11.01.2015

Detail yang diperlukan:

Bagi kami, itu adalah hal kecil yang aneh yang membawa kami pada kesalahan mendasar yang sebenarnya, maka solusinya.

Kami memiliki permata uglifier v 4.1.x dan yang terbaru pada saat penulisan ini adalah 4.2.x kami memperbarui versi uglifier, untuk berjaga-jaga.

Dan yang terjadi adalah versi baru ini sebenarnya mulai mengeluarkan lokasi file sebenarnya di mana kesalahan kompilasi terjadi. Dan ketika kami mengetahui dari mana kesalahan itu berasal, kami memperbaikinya.

Detil tambahan:

Masalah sebenarnya adalah kami memiliki beberapa file js.erb dan file-file ini menjalankan beberapa kode Rails untuk mengisi beberapa data env, seperti:

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

Dan kesalahan yang kami dapatkan adalah: Uglifier::Error: Unexpected token: punc (,).

Jadi jelas karena beberapa alasan Figaro tidak memberikan nilai yang kami inginkan. Kami melanjutkan untuk memperbaikinya dan memeriksa asumsi kami dengan mengkodekan nilai acak secara hardcoding, yang berhasil mengkompilasi JS.

Meletakkannya di sini sehingga dapat membantu seseorang.

PS: Jawaban teratas bagus, tetapi untuk beberapa alasan, ini memberi kami beberapa kesalahan acak terkait jsx alih-alih memberi kami kesalahan yang sebenarnya.

person Zia Ul Rehman Mughal    schedule 23.01.2020

Untuk beberapa alasan, di Heroku dan juga ketika saya menjalankan kode yang disebutkan di atas untuk "menjelekkan" javascript di konsol Rails, itu tidak akan melaporkan nomor baris kesalahan!. Ini hanyalah pembungkus rubi untuk UglifyJS, yang dapat Anda gunakan online di sini https://skalman.github.io/UglifyJS-online/.

Jadi saya hanya menyalin dan menempelkan file js yang melanggar di sini, dan melaporkan nomor barisnya. Sangat mudah.

person salza80    schedule 05.04.2017

Verifikasi file JS baru yang Anda tambahkan ke aplikasi Anda termasuk plugin dan lainnya yang ditambahkan oleh Bower atau semacamnya.

Coba tambahkan satu per satu untuk menemukan file apa yang bermasalah. Dalam kasus saya di anchor-scroll.js. Ketika saya mengubah untuk menggunakan anchor-scroll.min rake berjalan dengan baik.

Ubah ini:

//= require anchor-scroll/scroll

Untuk:

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

Masalah saya adalah dengan dua panggilan sukses.

Yang pertama adalah mqtt onSuccess:

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

yang saya selesaikan dengan:

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

dan yang kedua adalah kesuksesan Ajax. Linter akan menunjukkannya padamu

Kesalahan: Singkatan metode yang diharapkan

tapi semuanya akan bekerja dengan baik.

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 aset:prakompilasi:semua RAILS_ENV=produksi RAILS_GROUPS=aset"

Ada spasi di antara bagian yang dicetak tebal (antara ruby, garis miring terbalik, dan home).

Saya tidak tahu apakah ini salah ketik, tapi bisa jadi itu masalah Anda karena Rails tidak menyukai spasi pada nama direktori. Ganti nama folder itu, dan coba jalankan kode Anda lagi.

person skmichaelson    schedule 09.10.2013
comment
Harus ada ruang; itu tidak ada dalam nama file, saya menjalankan ruby ​​​​yang dapat dieksekusi, dengan jalur absolut ke file rake. - person Jeremy Rodi; 10.10.2013