Uglify SyntaxError: jeton inattendu: punc ())

j'essaie d'utiliser gulfp pour miniaturiser un dossier contenant des fichiers JS. Cependant, l'un des fichiers a l'erreur ci-dessus, l'empêchant d'être minimisé.

j'ai réussi à saisir et imprimer l'erreur, que j'ai partiellement imprimé ici:

JS_Parse_Error {
 message: 'SyntaxError: Unexpected token: punc ())',
 filename: 'ex.js',
 line: 189,
 col: 25,
 pos: 6482,
 stack: Errorn    at new JS_Parse_Error (eval at <anonymous> ... ) 
 plugin: 'gulp-uglify',
 fileName: '.../js/ex.js',
 showStack: false
}

le dossier en question contient ce qui suit, abrégé:

function() {
  ...
  $.confirm({
    buttons: {
        confirm: function() {
            $.post('/ajax-handler', {
                    ...
                })
                .done( function(response) {
                    var data = filterResponse(response);
                    if (data['status'] == 'success') {
                        sleep(1000).then(() => {
                    *       ...
                        });
                        sleep(5000).then(() => {
                            ...  
                        });

                    } else {
                        console.log('Oops!');
                    }
                })
                .fail( function(err, status, response) {
                    ...
            });
        },
        cancel: function() {}
    }
 });
  ...
}

j'ai ajouté le "*" ci-dessus pour indiquer la position exacte répertoriés par JS_Parse_Error.

39
demandé sur Alexander 2017-02-21 21:44:25

7 réponses

j'espère que vous pouvez vous inspirer de cette solution qui fonctionne avec webpack. (lien ci-dessous)

Simply teach UglifyJS ES6

il existe deux versions D'UglifyJS - ES5 et ES6 (harmonie), voir sur git

" ES5 version vient par défaut avec tous les plugins, mais si vous installez une version Harmony explicitement, ceux plugins l'utilisera à la place.

Paquet

.json

"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony"

ou

npm install --save uglify-js@github:mishoo/UglifyJS2#harmony

yarn add git://github.com/mishoo/UglifyJS2#harmony --dev

Webpack

pour l'utiliser avec webpack installer aussi le plugin webpack

npm install uglifyjs-webpack-plugin --save-dev

yarn add uglifyjs-webpack-plugin --dev

puis importer le plugin installé manuellement

var UglifyJSPlugin = require('uglifyjs-webpack-plugin');

et le remplacer dans le code

-  new webpack.optimize.UglifyJsPlugin({ ... })
+  new UglifyJSPlugin({ ... })

pour plus d'informations sur webpack (Installation / utilisation) voir https://github.com/webpack-contrib/uglifyjs-webpack-plugin#install

47
répondu Qwerty 2017-11-13 13:59:08

npm install uglifyjs-webpack-plugin --save-dev n'est pas assez

le problème principal est "uglifyjs-webpack-plugin": "^0.4.6" dans le paquet de webpack.json

selon semver , ^0.4.6 := >=0.4.6 <0.5.0 . En raison du zéro de tête, webpack ne sera jamais utiliser le 1.0.0-beta.2 .

donc après avoir lancé npm i -D uglifyjs-webpack-plugin@beta , vous devez faire un pas de plus qui est rm -rf node_modules/webpack/node_modules/uglifyjs-webpack-plugin . Alors webpack récupérera la version de node_modules/uglifyjs-webpack-plugin au lieu de node_modules/webpack/node_modules/uglifyjs-webpack-plugin

mise à jour le 2018-04-18: webpack v4 n'a pas ce numéro

14
répondu WooD 2018-04-18 18:09:46

ajouter la dépendance babel-preset-es2015 pour corriger cela.

et ajouter 'es2015' dans le fichier .babelrc .

json
{
    "presets": ["es2015"]
}
7
répondu Qing 2018-07-08 12:02:14

pour moi, cela n'avait rien à voir avec le fait Qu'Uglify ne fonctionnait pas correctement, mais plutôt avec une dépendance (dans ce cas-ci une promesse vide) qui n'a pas encore été compilée à ES5. Comme nous venons d'importer le fichier source brut, mais babel ne transpose que des fichiers en dehors de node_modules, uglify a été confus par la syntaxe ES6.

vérifiez simplement si une dépendance que vous avez récemment ajoutée pourrait ne pas avoir une construction" dist".

2
répondu spaceemotion 2018-01-25 11:04:22

j'ai le même problème, j'ai trouvé une grande réponses ici qui m'a aidé à atteindre le fichier qui a causé l'erreur.

Aller à la Console Rails et Coller:

JS_PATH = "app/assets/javascripts/**/*.js";
Dir[JS_PATH].each do |file_name|
  puts "\n#{file_name}"
  puts Uglifier.compile(File.read(file_name))
end

Espère que cela aide quelqu'un!

2
répondu Hamza Khan 2018-04-19 18:22:09

ajouter étape-3 aux préréglages .dossier babelrc.

{
  "presets": [
    "stage-3"
  ]
}
0
répondu Cong Nguyen 2018-07-09 04:41:15

j'ai eu le même problème avec vous. J'ai été en utilisant gulp.js. J'ai résolu ce problème grâce à js fichiers changer le format ES. Par exemple, avant résolu est mon code:

for (district for response) {
                $('#districts').append('<option value="' + district.id + '">' + district.name + '</option>');
                $('#districts').removeAttr('disabled');
            }

après le code fixe:

for (district in response) {
                $('#districts').append('<option value="' + district.id + '">' + district.name + '</option>');
                $('#districts').removeAttr('disabled');
            }

en résumé, le problème est dû à Ecma-uglify.js.

0
répondu melih sahin 2018-08-28 15:52:11