При запуске rake assets:precompile RAILS_ENV=производство над конвейером синтаксиса ES6 было нарушено

ЖЕЛЕЗНОДОРОЖНЫЕ АКТИВЫ ТРУБОПРОВОД

При запуске rake assets:precompile RAILS_ENV=production над синтаксисом ES6 конвейер ресурсов был нарушен. Если вместо этого мы вызовем rake assets:precompile со средой, установленной на RAILS_ENV=development, все будет работать нормально.

Подведение итогов

УСПЕХ НЕУДАЧА активы рейка: предварительная компиляция активы рейка: предварительная компиляция RAILS_ENV = производство RAILS_ENV=разработка RAILS_ENV=разработка
`bundle install...
The Gemfile's dependencies are satisfied
yarn install...
yarn install v1.22.19
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.41s.
yarn install v1.22.19
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.33s.
yarn run v1.22.19
$ webpack --config ./config/webpack/webpack.config.js
asset application.js 66 KiB [compared for emit] [minimized] (name: application) 1 related asset
runtime modules 718 bytes 3 modules
orphan modules 26.4 KiB [orphan] 1 module
built modules 92.4 KiB [built]
  modules by path ./app/javascript/ 27 KiB
    ./app/javascript/application.js + 1 modules 26.7 KiB [built] [code generated]
    ./app/javascript/channels/index.js 212 bytes [built] [code generated]
    ./app/javascript/channels/ sync _channel\.js$ 160 bytes [built] [code generated]
  modules by path ./node_modules/ 65.3 KiB
    ./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js 27.7 KiB [built] [code generated]
    ./node_modules/turbolinks/dist/turbolinks.js 37.6 KiB [built] [code generated]
webpack 5.75.0 compiled successfully in 2534 ms
Done in 3.60s.
yarn install v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 18.62s.
rake aborted!
Uglifier::Error: Unexpected token: punc ((). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
--
 584 
 585   App.cable = ActionCable.createConsumer();
 586 
 587 }).call(this);
 588 
 589 // app/javascript/channels/appearance_channel.js
 590 App.appearance = App.cable.subscriptions.create("AppearanceChannel", {
 591   // Called once when the subscription is created.
  =>   initialized() {
 593     this.update = this.update.bind(this)
 594   },
 595  
 596   // Called when the subscription is ready for use on the server.
 597   connected() {
 598     this.install()
 599     this.update()
 600   },
==
/usr/local/bundle/gems/uglifier-4.2.0/lib/uglifier.rb:291:in `parse_result'
/usr/local/bundle/gems/uglifier-4.2.0/lib/uglifier.rb:221:in `run_uglifyjs'
/usr/local/bundle/gems/uglifier-4.2.0/lib/uglifier.rb:166:in `compile'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/uglifier_compressor.rb:53:in `call'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/uglifier_compressor.rb:28:in `call'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:75:in `call_processor'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:56:in `call_processors'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/loader.rb:60:in `block in load'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/loader.rb:44:in `load'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:47:in `load'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/base.rb:66:in `find_asset'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:134:in `block in find'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:133:in `each'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:133:in `find'
/usr/local/bundle/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:186:in `compile'
/usr/local/bundle/gems/sprockets-rails-3.4.2/lib/sprockets/rails/task.rb:67:in `block (3 levels) in define'
/usr/local/bundle/gems/sprockets-3.7.2/lib/rake/sprocketstask.rb:147:in `with_logger'
/usr/local/bundle/gems/sprockets-rails-3.4.2/lib/sprockets/rails/task.rb:66:in `block (2 levels) in define'
/usr/local/bundle/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/cli.rb:491:in `exec'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/cli.rb:28:in `start'
/usr/local/bundle/gems/bundler-2.4.1/exe/bundle:45:in `block in <top (required)>'
/usr/local/bundle/gems/bundler-2.4.1/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/bundle/gems/bundler-2.4.1/exe/bundle:33:in `<top (required)>'
/usr/local/bundle/bin/bundle:25:in `load'
/usr/local/bundle/bin/bundle:25:in `<main>'
Tasks: TOP => assets:precompile`

Gemfile

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

#uby '3.2.0'

ruby '~>3.0.5'

#---- alectrico < 2023
#
gem 'state_machines', :require => 'state_machines/core' #usado por el modelo User
gem 'state_machines-activerecord'  #usado por el modelo User
gem 'devise' #usado como autenticación
gem 'rack-cors', :require => 'rack/cors' #usado para combatir cross site attacks
gem 'dkim' #para que los correos emitidos no sean envíados a spam
gem 'delayed_job'
gem 'dragonfly'
gem 'logging-email'
gem 'logging-rails'
gem 'transbank-sdk', '~> 1.4'
gem 'paypal-sdk-rest'
gem 'wicked_pdf'
gem 'jwt'
gem 'dotenv' #usado por braintree como inicializador


  #--solo para precompilar assets, no usar en production
gem 'bootstrap-sass', '3.3.7'
gem 'jquery-rails'
gem 'coffee-rails', '~> 4.2'
gem "sprockets-rails"
gem 'uglifier' #se usa solo para generar assets precompilados
gem 'terser'
  #---
#-------- pedidos por los controllers
gem 'origami' #para hacer pdf
gem 'prawn' #para hacer pdf
gem 'httparty' #para enviar mensajes waba

group :test, :development do
  gem 'factory_bot_rails', '~> 4.0' #usado por rspec para los factories
  gem 'capybara' #usado por cucumber para las pruebas
  gem 'shoulda-matchers' #usado por rspec para pruebas
  gem 'faker'            #usado por rspec para construir factories a partir de modelos de datos
end

#depenencias de assets

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.1.7'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 6.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 6'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.11'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false

group :development, :test do
  gem 'bundle-audit'
  gem 'brakeman'
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'pry-rails'
  gem 'rspec-rails', '~> 6.0.1'
  gem "rubocop", require: false
  gem "rubocop-rails", require: false
end

group :development,:production, :test do
  gem 'rack-mini-profiler', '~> 3.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

# Ruby 3.1 no longer includes these
gem 'net-imap'
gem 'net-pop'
gem 'net-smtp'

gem 'jsbundling-rails'

производство.рб

Rails.application.configure do

  config.exceptions_apps = self.routes
  config.action_view.embed_authenticity_token_in_remote_forms = true
  config.action_mailer.asset_host = config.domain["name_http"]
  config.action_mailer.default_url_options = { :host =>  config.domain['name_https'],:only_path => false}
  config.cache_classes = true
  config.eager_load = false
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.assets.js_compressor = :uglifier
  config.assets.compile = false
  config.serve_static_assets = true
  config.force_ssl = true
  config.log_level =  ENV['CONFIG_LOG_LEVEL'].present? ? ENV['CONFIG_LOG_LEVEL'].downcase.to_sym : :fatal
  config.log_tags = [ :request_id ]
  config.action_mailer.perform_caching = true
  config.action_mailer.raise_delivery_errors = false
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  config.log_formatter = ::Logger::Formatter.new
  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger = ActiveSupport::TaggedLogging.new(logger)
  end
  config.active_record.dump_schema_after_migration = false
  config.log_to = %w[stdout]
  config.show_log_configuration = false
end
                                                                                                                                   

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

Можете ли вы поделиться своим файлом production.rb? Возможно дублируется отсюда: stackoverflow.com/questions/56063066/…

Pedro Augusto Ramalho Duarte 01.02.2023 21:29

если вы используете jsbundling, вам не нужно config.assets.js_compressor = :uglifier

Pedro Augusto Ramalho Duarte 01.02.2023 21:30

1. Пока что мне нужны звездочки для предварительной компиляции старых ресурсов, но кажется, что звездочки требуют uglifier, поэтому я добавляю гем uglifier. Но те

alectrico 02.02.2023 04:35
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

У вас есть в основном 2 варианта, чтобы исправить это:

  • Если вы хотите использовать гем Uglifier, перейдите на: config.assets.js_compressor = Uglifier.new(harmony: true), см.: https://github.com/lautis/uglifier#rails

  • Вы также можете использовать гем Terser: config.assets.js_compressor = :terser (на самом деле новейшие Rails перешли на Terser, см.: https://github.com/rails/rails/pull/42622)

Спасибо @markets, я сделал это безуспешно. Я тестирую решение, удаляя звездочки из Gemfile и application.rb, как рекомендовано здесь ~

alectrico 02.02.2023 15:58

ой! Я на 100% уверен, что это связано с другими драгоценными камнями/настройками в вашем приложении, мои предложенные решения должны работать нормально! Вот у меня есть общедоступное приложение с этой настройкой, и оно хорошо работает: github.com/coopdevs/timeoverflow/blob/develop/config/…

markets 02.02.2023 19:15

Мне пришлось выполнить актив: клоббер перед переходом с углифайера на тезер-компрессор. Наконец добиться успеха. Спасибо. Ты был прав!

alectrico 03.02.2023 04:14

Я добился успеха, изменив config.assets.js_compresor = :terser на production.rb, а затем вызвав rake assets:clobber.

Большое спасибо @markets, которые настаивают на своем решении, которое, наконец, оказалось правильным.

Другие вопросы по теме