tenqmemo uglifier es6

herokuのデプロイでエラーがでた。

ExecJS::RuntimeError: SyntaxError: Unexpected token punc «(», expected punc «:»

eslintをバージョンアップしてherokuに対応版をリリースした時に発生した。 エラーログを見てみると、assets:precompile時に発生している。

エラーメッセージで検索してみるとこのへんがヒット。 https://stackoverflow.com/questions/30422437/execjsprogramerror-unexpected-token-punc-expected-punc-when-running

syntaxに問題があるから見直せよとのこと。 uglifierのREADMEには、

UglifyJS currently is known to work quite well with ES5. Experimental ES6/Harmony support can be enabled with :harmony => true option. See UglifyJS2#448 for more details.

https://github.com/lautis/uglifier

なので、どうやらES6のsyntaxで問題がありそう。

https://github.com/lautis/uglifier/issues/116

に対応するPRが出ていたので、experimentalとあるけど、まぁ物は試しということで、有効にしてみる。

# config/environments/production.rb
config.assets.js_compressor = Uglifier.new(harmony: true)

herokuにデプロイしたら通った。