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.
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.
.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
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
ajouter la dépendance babel-preset-es2015
pour corriger cela.
et ajouter 'es2015'
dans le fichier .babelrc
.
json
{
"presets": ["es2015"]
}
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".
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!
ajouter étape-3 aux préréglages .dossier babelrc.
{
"presets": [
"stage-3"
]
}
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.