uglifier icon indicating copy to clipboard operation
uglifier copied to clipboard

Uglifier::Error: Unexpected token: punc (.)

Open mur-wtag opened this issue 2 years ago • 4 comments

I know there there are tons of solution for this issue and I've tried all of them and still facing this issue while it's trying to compile assets.

here is the error logs:

[4/5] Linking dependencies...
       warning " > [email protected]" has unmet peer dependency "webpack@^4.0.0".
       warning " > [email protected]" has unmet peer dependency "webpack@^4.37.0 || ^5.0.0".
       warning "webpack-dev-server > [email protected]" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
       [5/5] Building fresh packages...
       Done in 3.02s.
       rake aborted!
       Uglifier::Error: Unexpected token: punc (.)
       --
        3527       })
        3528     };
        3529   }
        3530 }
        3531 
        3532 customElements.define("turbo-cable-stream-source", TurboCableStreamSourceElement);
        3533 
        3534 function overrideMethodWithFormmethod({detail: {formSubmission: {fetchRequest: fetchRequest, submitter: submitter}}}) {
          =>   const formMethod = submitter?.formMethod;
        3536   if (formMethod && fetchRequest.body.has("_method")) {
        3537     fetchRequest.body.set("_method", formMethod);
        3538   }
        3539 }
        3540 
        3541 addEventListener("turbo:submit-start", overrideMethodWithFormmethod);
        3542 
        3543 var adapters = {
       ==
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/uglifier-4.2.0/lib/uglifier.rb:291:in `parse_result'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/uglifier-4.2.0/lib/uglifier.rb:221:in `run_uglifyjs'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/uglifier-4.2.0/lib/uglifier.rb:166:in `compile'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/compressing.rb:65:in `block in js_compressor='
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/legacy_proc_processor.rb:31:in `call'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:75:in `call_processor'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:56:in `reverse_each'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:56:in `call_processors'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:134:in `load_from_unloaded'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:60:in `block in load'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:44:in `load'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:20:in `block in initialize'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:47:in `load'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/base.rb:66:in `find_asset'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/base.rb:73:in `find_all_linked_assets'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:134:in `block in find'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:133:in `each'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:133:in `find'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:186:in `compile'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-rails-3.4.2/lib/sprockets/rails/task.rb:67:in `block (3 levels) in define'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-3.7.2/lib/rake/sprocketstask.rb:147:in `with_logger'
       /layers/heroku_ruby/gems/vendor/bundle/ruby/2.7.0/gems/sprockets-rails-3.4.2/lib/sprockets/rails/task.rb:66:in `block (2 levels) in define'
       Tasks: TOP => assets:precompile
       (See full trace by running task with --trace)

 !
 !     Precompiling assets failed.
 !
ERROR: failed to build: exit status 1
Error: errors were encountered with one or more resources

In my project's production.rb I've defined this to enable ES6/harmony:

config.assets.js_compressor = Uglifier.new(harmony: true)

Not sure how to resolve this issue. Any help will be appreciable 🙏

mur-wtag avatar Aug 02 '22 12:08 mur-wtag

Seems replacing with terser with ES6 support has been the repeated suggestion here.

tleish avatar Aug 03 '22 20:08 tleish

This seems to be caused by Turbo having es2020? features in it's gems' /app/assets/javascripts/turbo.js. I've hit the same problem and am not sure how to proceed.

vikdotdev avatar Aug 09 '22 14:08 vikdotdev

Weirdly enough the exact syntax is not in the source code of https://github.com/hotwired/turbo-rails

vikdotdev avatar Aug 09 '22 14:08 vikdotdev

Here's the fix in turbo-rails https://github.com/hotwired/turbo-rails/pull/337/files Use main branch version until >= v1.1.2 comes out:

gem "turbo-rails", github: 'hotwired/turbo-rails'

Edit or more safely with:

gem "turbo-rails", github: 'hotwired/turbo-rails', ref: '37be2c6c39c417ddd5f12dcd494fb232220b0d08'

vikdotdev avatar Aug 09 '22 14:08 vikdotdev