質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

7193閲覧

ERROR in xxx.js from UglifyJs Unexpected token: operator (>) を解決したい

y-temp4

総合スコア67

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/05/21 11:10

###前提・実現したいこと
タイトルにあるエラーを解決したいです。

環境はwebpack2系でバンドルを行っており、その過程でproduction buildしたいのですがUglifyJSPlugin等を使っても上記のエラーが出てしまい困っています。

エラーが出るのは、remark-parseなどを呼び出しているときです。このライブラリを呼び出す過程でwebpack.config.jsresolveextensions.jsonの拡張子を付け足す必要がありました。

この状態でuglifyすると上記のエラーが出ます。remark-parseを使わない状態(jsonファイルの解決を行っていない環境)ではエラーは出ません。

###該当のソースコード

上記の説明にあるwebpack.config.jsです。

js

1/* eslint comma-dangle: ["error", 2 {"functions": "never", "arrays": "only-multiline", "objects": 3 "only-multiline"} ] */ 4 5const webpack = require('webpack'); 6const ExtractTextPlugin = require('extract-text-webpack-plugin'); 7const pathLib = require('path'); 8const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); 9const devBuild = process.env.NODE_ENV !== 'production'; 10 11const config = { 12 entry: [ 13 'es5-shim/es5-shim', 14 'es5-shim/es5-sham', 15 'babel-polyfill', 16 './entry/application', 17 ], 18 19 output: { 20 filename: 'webpack-bundle.js', 21 path: pathLib.resolve(__dirname, '../app/assets/webpack'), 22 }, 23 24 resolve: { 25 // extensions: ['.js', '.jsx', '.css', '.scss'], 26 extensions: ['.js', '.jsx', '.json', '.css', '.scss'], 27 }, 28 plugins: [ 29 new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }), 30 new ExtractTextPlugin('webpack-bundle.css'), 31 new UglifyJSPlugin(), 32 ], 33 module: { 34 rules: [ 35 { 36 test: require.resolve('react'), 37 use: { 38 loader: 'imports-loader', 39 options: { 40 shim: 'es5-shim/es5-shim', 41 sham: 'es5-shim/es5-sham', 42 } 43 }, 44 }, 45 { 46 test: /\.jsx?$/, 47 use: 'babel-loader', 48 exclude: /node_modules/, 49 }, 50 { 51 test: /\.json$/, 52 use: 'json-loader' 53 }, 54 { 55 test: /\.(scss|sass|css)$/i, 56 use: ExtractTextPlugin.extract({ 57 fallback: 'style-loader', 58 use: [ 59 { loader: 'css-loader', options: { minimize: !devBuild } }, 60 'postcss-loader', 61 'sass-loader' 62 ], 63 }), 64 } 65 ], 66 }, 67}; 68 69module.exports = config; 70 71if (devBuild) { 72 console.log('Webpack dev build for Rails'); // eslint-disable-line no-console 73 module.exports.devtool = 'eval-source-map'; 74} else { 75 console.log('Webpack production build for Rails'); // eslint-disable-line no-console 76}

###試したこと

調べるとuglifyにはharmonyもあるようですが、追加してみても動きませんでした(yarn add --dev git+https://github.com/mishoo/UglifyJS2.git#harmony)。

###補足情報(言語/FW/ツール等のバージョンなど)

あまり関係ないかもしれませんが、react_on_railsの環境で開発をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

他に使っているライブラリの中にremark-emojiがあったので、それの内部でallow functionを使わなくしたらuglifyjsが動くようになりました。

根本的な解決方法になっていないので、もしwebpackでES6のコードを圧縮することができる方がいたら教えてほしいです。

投稿2017/05/22 10:35

y-temp4

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ES6の文法がサポートされていないのが原因のようです。

以下npmのドキュメントを翻訳してみました。

https://www.npmjs.com/package/uglifyjs-webpack-plugin

uglifyjs-webpack-pluginプラグインはuglify-jsに依存しているので、プラグインを使用するにはuglify-jsもインストールする必要があります。ただし、現在利用可能なuglify-js npmパッケージは、ES6コードの縮小をサポートしていません。
ES6をサポートするには、ES6対応の別名ハーモニーバージョンのUglifyJSを提供する必要があります。

あなたの圧縮ターゲットがES6の場合:

yarn add git://github.com/mishoo/UglifyJS2#harmony --dev
あなたの圧縮ターゲットがES5の場合:

yarn add uglify-js --dev

投稿2017/05/22 09:11

hibikikudo

総合スコア238

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y-temp4

2017/05/22 10:26

回答ありがとうございます! `yarn add git://github.com/mishoo/UglifyJS2#harmony --dev`を実行し、devDependenciesには "uglify-es": "git://github.com/mishoo/UglifyJS2#harmony", "uglifyjs-webpack-plugin": "^0.4.3" といった記述がある状態ですが、残念ながら同様のエラーが出てしまいますね・・・。
y-temp4

2017/05/22 10:34

根本的な解決になっていないかもしれないですが、解決できたので解決方法を書いておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問