2016-11-01 2 views
1

Je reçois une erreur lorsque j'essaie d'exécuter mon webpack pour la production.ERREUR de UglifyJs: SyntaxError: Jeton inattendu: opérateur (>)

ERROR in js/main.21dbce548a76ffc14cfb.js from UglifyJs 
SyntaxError: Unexpected token: operator (>) [./~/tmi.js/lib/utils.js:3,0][js/main.21dbce548a76ffc14cfb.js:3529,20] 

utils.js: 3,0 (ce qui est le même que dans mes minified js) est:

// Return the second value if the first value is undefined.. 
    get: (obj1, obj2) => { return typeof obj1 === "undefined" ? obj2 : obj1; }, 

donc je suppose que de l'erreur est renvoyée parce qu'elle est la lecture ES6, mais il doesn ne comprend pas ES6? (La fonction de flèche)

Je ne vois pas ce qui se passe mal ici, ceci est mon webpack.config.js

// changed some loader syntax after reading 
// https://webpack.js.org/how-to/upgrade-from-webpack-1/ 

const path = require(`path`); 

const webpack = require(`webpack`); 
const {UglifyJsPlugin} = webpack.optimize; 

const CopyWebpackPlugin = require(`copy-webpack-plugin`); 
const ExtractTextWebpackPlugin = require(`extract-text-webpack-plugin`); 
const configHtmls = require(`webpack-config-htmls`)(); 

const extractCSS = new ExtractTextWebpackPlugin(`css/style.css`); 

// change for production build on different server path 
const publicPath = `/`; 

// hard copy assets folder for: 
// - srcset images (not loaded through html-loader) 
// - json files (through fetch) 
// - fonts via WebFontLoader 

const copy = new CopyWebpackPlugin([{ 
    from: `./src/assets`, 
    to: `assets` 
}], { 
    ignore: [ `.DS_Store` ] 
}); 

const config = { 

    entry: [ 
    `./src/css/style.css`, 
    `./src/js/script.js` 
    ], 

    resolve: { 
    // import files without extension import ... from './Test' 
    extensions: [`.js`, `.jsx`, `.css`] 
    }, 

    output: { 
    path: path.join(__dirname, `server`, `public`), 
    filename: `js/[name].[hash].js`, 
    publicPath 
    }, 

    devtool: `sourcemap`, 

    module: { 

    rules: [ 
     { 
     test: /\.css$/, 
     loader: extractCSS.extract([ 
      { 
      loader: `css`, 
      options: { 
       importLoaders: 1 
      } 
      }, 
      { 
      loader: `postcss` 
      } 
     ]) 
     }, 
     { 
     test: /\.html$/, 
     loader: `html`, 
     options: { 
      attrs: [ 
      `audio:src`, 
      `img:src`, 
      `video:src`, 
      `source:srcset` 
      ] // read src from video, img & audio tag 
     } 
     }, 
     { 
     test: /\.(jsx?)$/, 
     exclude: /node_modules/, 
     use: [ 
      { 
      loader: `babel` 
      }, 
      { 
      loader: `eslint`, 
      options: { 
       fix: true 
      } 
      } 
     ] 
     }, 
     { 
     test: /\.(svg|png|jpe?g|gif|webp)$/, 
     loader: `url`, 
     options: { 
      limit: 1000, // inline if < 1 kb 
      context: `./src`, 
      name: `[path][name].[ext]` 
     } 
     }, 
     { 
     test: /\.(mp3|mp4)$/, 
     loader: `file`, 
     options: { 
      context: `./src`, 
      name: `[path][name].[ext]` 
     } 
     } 
    ] 

    }, 

    plugins: [ 
    extractCSS, 
    copy 
    ] 

}; 

if(process.env.NODE_ENV === `production`){ 

    //image optimizing 
    config.module.rules.push({ 
    test: /\.(svg|png|jpe?g|gif)$/, 
    loader: `image-webpack`, 
    enforce: `pre` 
    }); 

    config.plugins = [ 
    ...config.plugins, 
    new UglifyJsPlugin({ 
     sourceMap: true, // false returns errors.. -p + plugin conflict 
     comments: false 
    }) 
    ]; 

} 

config.plugins = [...config.plugins, ...configHtmls.plugins]; 

module.exports = config; 
+2

Vous ne spécifiez pas 'preset's dans la section' babel' avec 'query', vous avez donc' .babelrc' avec '' presets ": [" es2015 "]' dedans? –

+0

@clk réponse: 3 –

+0

Réponse acceptée: 3 – Kevin

Répondre

2
erreur de

OP est de UglifyJs, comme cela est résolu dans la réponse acceptée, certaines personnes à cette page peuvent obtenir l'erreur de babel, auquel cas, le fixer avec: ajouter "presets": ["es2015"] soit à la section options.presets de babel-chargeur, ou à .babelrc.

1

UglifyJs2 a une branche d'harmonie qui accepte la syntaxe ES6 à minifiés. À ce moment, vous devez créer une fourchette de webpack et pointer webpack sur cette fourche.

J'ai récemment répondu à quelques questions similaires. S'il vous plaît jeter un oeil à #38387544 ou #39064441 pour des instructions détaillées.