คราดทรัพย์สิน: คอมไพล์ล่วงหน้าทำให้เกิดข้อผิดพลาด punc

ฉันกำลังพยายามคอมไพล์สินทรัพย์ของฉันล่วงหน้าเพื่อการใช้งานจริง แต่ดูเหมือนว่า Rails จะไม่ให้ความร่วมมือ

$ 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
มีข้อผิดพลาดทางไวยากรณ์อยู่ที่ไหนสักแห่งในไฟล์จาวาสคริปต์ของคุณ ลองลบ/เพิ่ม 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 ฉันต้องลบออกจากโฟลเดอร์ Asset และคัดลอกไปยังโฟลเดอร์สาธารณะด้วยตนเอง จากนั้นเพิ่ม ‹script src=/tagsinput.js› เพื่ออ้างอิงในมุมมองของฉัน :(   -  person David Mauricio    schedule 27.05.2014


คำตอบ (10)


วิธีที่เป็นสากลมากขึ้นในการค้นหาปัญหาใน js-assets: เรียกใช้ 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 คาดหวังจาวาสคริปต์ล้วนๆ ในขณะที่ไฟล์ .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
สำหรับใครก็ตามที่ไม่สามารถระบุบรรทัดที่แน่นอนที่ทำให้เกิดปัญหาในไฟล์ที่แสดงผ่านวิธีแก้ปัญหาของ Sergey ให้ลอง 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 config หรืออะไรสักอย่าง - 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 แบบไดนามิก ในการรวบรวมเนื้อหา จาวาสคริปต์ถูกตีความราวกับว่าไม่มี ENV['bla_bla'] ที่ให้ข้อผิดพลาดทางไวยากรณ์ :) - person tsikov; 13.10.2014
comment
ในกรณีของฉัน มันเป็นไฟล์ที่ต่ำกว่า app/assets/javascripts ใน gem ที่ไม่มีนามสกุล - 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

นี่มันแย่มาก ไม่มีข้อผิดพลาดของจาวาสคริปต์ในคอมพิวเตอร์ของฉัน หมายความว่ามีปัญหากับการรวบรวมเนื้อหา

นี่คือวิธีที่ฉันแก้ไขมัน

ตามที่แนะนำในความคิดเห็นสำหรับคำถามที่คล้ายกัน ExecJS::ProgramError: Unexpected token punc «(», punc ที่คาดหวัง «:» เมื่อเรียกใช้ rake Asset :precompile on Production ฉันลบ uglifier (ใน production.rb, ใส่ความคิดเห็นในบรรทัดคอมเพรสเซอร์) และการบีบอัดทั้งหมด (ฉันได้ลองใช้กับคอมเพรสเซอร์อื่นแล้ว yui ไม่ได้ให้ข้อมูลมากนัก การปิดดูเหมือนจะให้คำแนะนำแก่ฉัน แต่ก็ไม่ได้ ไม่ได้ช่วยอะไรมาก)

จากนั้นฉันก็บีบอัดสินทรัพย์ภายในเครื่อง จากนั้นฉันก็ผลักดันไปสู่การใช้งานจริง (หากต้องการบีบอัดในเครื่องให้ใช้ RAILS_ENV=production rake assets:precompile )

ฉันทำงานบนเซิร์ฟเวอร์ และนี่คือช่วงเวลาที่เกิดข้อผิดพลาดของจาวาสคริปต์ โดยพื้นฐานแล้วมันเป็นการรวมไฟล์ที่ผิดพลาด (สาเหตุหลักมาจากบางสิ่งที่ใส่ความคิดเห็นไว้) ฉันกำจัดบรรทัดเหล่านั้นและผลักดันกลับสู่การผลิต ทุกอย่างประสบความสำเร็จ

ฉันนำ 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 (,)

ด้วยเหตุผลบางประการ Figaro จึงไม่ให้คุณค่าที่เราปรารถนาแก่เรา เราทำการแก้ไขต่อไปและตรวจสอบสมมติฐานของเราด้วยค่าสุ่มฮาร์ดโค้ด ซึ่งคอมไพล์ JS ได้สำเร็จ

วางไว้ที่นี่อาจช่วยใครซักคนได้

PS: คำตอบยอดนิยมนั้นดีมาก แต่ด้วยเหตุผลบางอย่าง มันทำให้เรามีข้อผิดพลาดแบบสุ่มที่เกี่ยวข้องกับ jsx ให้เราแทนที่จะให้เรา ข้อผิดพลาดที่เกิดขึ้นจริง

person Zia Ul Rehman Mughal    schedule 23.01.2020

ด้วยเหตุผลบางประการ บน Heroku และเมื่อฉันรันโค้ดที่กล่าวถึงข้างต้นเพื่อ "uglify" จาวาสคริปต์ในคอนโซล Rails มันจะไม่รายงานหมายเลขบรรทัดของข้อผิดพลาด! มันเป็นเพียงกระดาษห่อทับทิมสำหรับ UglifyJS ซึ่งคุณสามารถใช้ออนไลน์ได้ที่นี่ https://skalman.github.io/UglifyJS-online/.

ดังนั้นฉันจึงคัดลอกและวางไฟล์ js ที่ละเมิดที่นี่ และมันจะรายงานหมายเลขบรรทัด ง่ายมาก.

person salza80    schedule 05.04.2017

ตรวจสอบไฟล์ JS ใหม่ที่คุณเพิ่มในแอปพลิเคชันของคุณมีปลั๊กอินและอื่นๆ ที่เพิ่มโดย Bower หรืออะไรที่คล้ายกัน

ลองเพิ่มทีละไฟล์เพื่อดูว่าไฟล์ใดมีปัญหา ในกรณีของฉันคือใน anchor-scroll.js พอผมเปลี่ยนมาใช้ anchor-scroll.min rake ก็วิ่งได้โอเค

เปลี่ยนสิ่งนี้:

//= 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:พรีคอมไพล์:ทั้งหมด RAILS_ENV=production RAILS_GROUPS=assets"

มีช่องว่างระหว่างส่วนที่เป็นตัวหนา (ระหว่าง Ruby, แบ็กสแลช และ Home)

ฉันไม่รู้ว่านี่เป็นการพิมพ์ผิดหรือไม่ แต่อาจเป็นปัญหาของคุณได้เนื่องจาก Rails ไม่ชอบช่องว่างในชื่อไดเร็กทอรี เปลี่ยนชื่อโฟลเดอร์นั้น และลองเรียกใช้โค้ดของคุณอีกครั้ง

person skmichaelson    schedule 09.10.2013
comment
ควรมีช่องว่าง มันไม่ได้อยู่ในชื่อไฟล์ ฉันกำลังเรียกใช้ไฟล์ปฏิบัติการ Ruby โดยมีพาธสัมบูรณ์ไปยังไฟล์เรค - person Jeremy Rodi; 10.10.2013