我正面临这个问题
Uglifier::Error: Unexpected token: keyword (const). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
在生产中通过 capistrano 部署项目时。
我遵循了这个解决方案
https://github.com/lautis/uglifier/issues/127#issuecomment-352224986
这表明
替换
config.assets.js_compressor = :uglifier
和
config.assets.js_compressor = Uglifier.new(harmony: true)
但即使这样做了,我仍然面临同样的错误。我不明白出了什么问题。我正在使用uglifier (4.1.20)版本
我刚刚将我的应用程序升级为使用Ruby 2.4.0,在捆绑过程中没有任何错误.但是,当我尝试启动我的服务器时,出现以下错误:
There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: wrong argument type Class (expected Module)
Run Code Online (Sandbox Code Playgroud)
我在这个网站的其他答案中发现你需要添加gem 'therubyracer'到你的Gemfile中,但是自从创建我的应用程序以来我已经有了这个.
最新版本的NodeJS也安装在我的机器上.
有没有其他人遇到此错误,知道如何解决它?
Gemfile中的uglifier配置: gem 'uglifier', '~> 3.0.4'
完整堆栈跟踪:
/home/severin/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/home/severin/.rvm/gems/ruby-2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
/home/severin/.rvm/gems/ruby-2.4.0/gems/therubyracer-0.12.2/lib/v8/conversion.rb:21: warning: constant ::Fixnum is deprecated
/home/severin/.rvm/gems/ruby-2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: wrong argument …Run Code Online (Sandbox Code Playgroud) 我在生产中预编译资产时遇到了NoMethodError: undefined method start_with?' for nil:NilClass错误。
这似乎是一个问题uglifier,我正在使用以下宝石:
导轨 (5.2.2)
丑化者 (4.1.9)
链轮-导轨 (3.2.1)
therubyracer (0.12.3)
日志跟踪:
** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke yarn:install (first_time)
** Execute yarn:install
yarn install v1.13.0
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.36s.
** Execute assets:precompile
rake aborted!
NoMethodError: undefined method `start_with?' for nil:NilClass
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:225:in `error_message'
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:234:in `parse_result'
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:216:in `run_uglifyjs'
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:168:in `compile'
/usr/lib64/ruby/gems/2.4.0/gems/sprockets-3.7.1/lib/sprockets/compressing.rb:65:in `block in js_compressor=' …Run Code Online (Sandbox Code Playgroud) 这可能看起来像一个愚蠢的问题但是有一些原因,为什么Uglifiers不使用指针uglify引用外部函数?
一个例子:
我正在处理的文件有多个调用_gaq.push().我通过添加到文件顶部来压缩这个var _g=_gaq.push();.然后我更新它的12个调用以使用_g指针.这还没有节省大量的金额(84字节),但每一点都有帮助吗?
我错过了什么,是不是有理由让Uglifiers不这样做?
每当我rake assets:precompile RAILS_ENV=production在命令行中运行时,都会出现此错误,这将阻止我预编译资产。
以下是命令行中显示的完整错误:
rake aborted!
Uglifier::Error: Unexpected token: operator (<)
/usr/local/rvm/gems/ruby-2.3.4/gems/uglifier-4.1.4/lib/uglifier.rb:234:in parse_result'
/usr/local/rvm/gems/ruby-2.3.4/gems/uglifier-4.1.4/lib/uglifier.rb:216:in run_uglifyjs'
/usr/local/rvm/gems/ruby-2.3.4/gems/uglifier-4.1.4/lib/uglifier.rb:168:in compile'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/compressing.rb:65:in block in js_compressor='
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/legacy_proc_processor.rb:31:in call'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in call_processor'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in block in call_processors'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in reverse_each'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in call_processors'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in load_from_unloaded'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in block in load'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in fetch_asset_from_dependency_cache'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in load'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in block in initialize'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in load'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in find_asset'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in find_all_linked_assets'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:142:in block in find'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:114:in block (2 levels) in logical_paths'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:228:in block in stat_tree'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:212:in block in stat_directory'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in each'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in stat_directory'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:227:in stat_tree'
/usr/local/rvm/gems/ruby-2.3.4/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in …Run Code Online (Sandbox Code Playgroud)