onox blog

Rails assets:precompile Uglifierのエラー

January 17, 2019

Rails5 + vue.jsなアプリでassets:precompileした時のエラー対処法を記載する

  • エラー内容
Uglifier::Error: Unexpected token: string (controllers). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).

原因

公式READMEに大々的に記載されている通り、デフォルトではES6構文に対応していないためコンパイル時にエラーが出ている

対処法

Uglifierを以下のようオプション付きで使うようにする

  • config/environments/production.rb

デフォルトの設定を

config.assets.js_compressor = :uglifier

以下に変更する

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

(参考)Uglifierとは

UglifyJSというJavaScriptのコード軽量化(※)ライブラリをRubyで扱えるようにするGem。
※ 改行、空白、コメントなどが取り除かれる

Ruby wrapper for UglifyJS JavaScript compressor.