J'essaie d'utiliser gulp afin de réduire un dossier contenant des fichiers JS. Cependant, l'un des fichiers présente l'erreur ci-dessus, ce qui l'empêche d'être réduit.
J'ai réussi à attraper et à imprimer l'erreur, que j'ai partiellement imprimée ici :
JS_Parse_Error {
message: 'SyntaxError: Unexpected token: punc ())',
filename: 'ex.js',
line: 189,
col: 25,
pos: 6482,
stack: Error\n at new JS_Parse_Error (eval at <anonymous> ... )
plugin: 'gulp-uglify',
fileName: '.../js/ex.js',
showStack: false
}
Le fichier en question contient le texte suivant, 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 afin d'indiquer la position exacte listée par JS_Parse_Error.
8 votes
Il semble que vous ne convertissiez pas le code en ES5 avant de le réduire, ce qui fait que uglify ne comprend pas ce qu'il faut faire.
() => {}
signifie. Si vous le changez ensleep(1000).then(function() { ... })
cela devrait fonctionner, sauf s'il y a d'autres erreurs0 votes
D'accord, j'ai dû résoudre quelques autres erreurs, mais ça a vraiment aidé et tout fonctionne maintenant. Pour l'anecdote, puisque je l'ai beaucoup entendu parler, savez-vous quelle est la différence entre ES5 et ES6 ?
1 votes
Vous pouvez vérifier es6-features.org . Il y a beaucoup de différences
1 votes
@Alexander J'ai un paquet npm qui présente cette erreur, comment se fait-il qu'il ne soit pas converti en ES5 puisque le reste du projet est converti ?
0 votes
@Qwerty Je dois admettre qu'il m'est difficile de dire sans en savoir plus sur ce que vous essayez de minifier, malheureusement. Dans mon cas ci-dessus, j'ai dû changer manuellement le code en ES5.
0 votes
Je crois que je minifie tout. J'écris mon projet en ES6, j'utilise quelques paquets npm et certains sont en ES6 également - ceux-là présentent ces erreurs UglifyJS. Je me demandais pourquoi mon code est transpilé et minifié sans problème, mais ces paquets ne le sont pas. Peut-être qu'un autre transpilateur a transformé mon code en ES5 sans tenir compte des modules, puis il y a eu un désordre de code ES5+ES6 et UglifyJS s'est énervé. Quoi qu'il en soit, j'ai résolu le problème. J'ai appris à UglifyJS ES6.