Gulp-uglify: lancer; / / événement "Erreur" non manipulé
je suis nouveau à gulfp , et je suis des tutoriels dans http://leveluptuts.com/tutorials/learning-gulp , je reçois cette erreur:
events.js:141
throw er; // Unhandled 'error' event
^
Error
at new JS_Parse_Error (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:196:18)
at js_error (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:204:11)
at croak (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:680:9)
at token_error (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:688:9)
at unexpected (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:694:9)
at expr_atom (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1201:9)
at maybe_unary (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1363:19)
at expr_ops (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1398:24)
at maybe_conditional (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1403:20)
at maybe_assign (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1427:20)
voici mon code:
var gulp = require('gulp')
uglify = require('gulp-uglify');
gulp.task('default', function() {
// body...
gulp.src('js/*.js')
.pipe(uglify())
.pipe(gulp.dest('minjs'));
});
et l'arbre de l'annuaire, tout simplement
-gulp
-js/
-gulpfile.js
merci beaucoup
6 réponses
votre tâche uglify est probablement étouffante sur l'un des fichiers qu'il essaie de traiter. Gérer l'erreur et écrire la sortie sur la console pour que vous puissiez voir quel fichier cause l'échec de la tâche.
gulp.task('scripts', ['clean'], function () {
return gulp.src('js/*.js')
.pipe(uglify().on('error', function(e){
console.log(e);
}))
.pipe(gulp.dest('minjs'));
});
lorsque vous exécutez votre tâche gulfp à nouveau, vous obtenez toujours une erreur, mais cette fois, vers le haut de la sortie, vous verrez le numéro de fichier et de ligne que uglify a des problèmes de traitement. Déboguez à partir de là.
peut-être que c'est un erreur de syntaxe? De la réparer, et essayez à nouveau.
peut-être que tu as une _reférence bizarre.un fichier js avec des caractères inattendus comme ceux que vous voyez parfois dans les projets de Studio? De l'exclure de la gulp.src et essayez de nouveau.
j'ai eu la même erreur. J'ai donc essayé de sortir une erreur sur la console (grâce à bingo ). J'ai réalisé que le problème est que gulp-uglify ne veut pas travailler avec ES6. J'ai changé mon code JS en ES2015 et voilà. Vous pouvez également utiliser goup-babel .
vous pouvez Aussi utiliser gulp-util
.
https://www.npmjs.com/package/gulp-util
var gutil = require('gulp-util');
gulp.task('scripts', ['clean'], function () {
return gulp.src('js/*.js')
.pipe(uglify().on('error',gutil.log))
.pipe(gulp.dest('minjs'));
});
dans mon cas, il semble qu'il n'accepte pas la fonction "arrow-syntax"
(par exemple data=>{ // do something; }
)
j'ai eu le même problème et devenait le même message d'erreur.
Le problème était qu'un de mes fichiers JS avait un @charset "UTF-8"; à la première ligne. Donc la syntaxe était cassée à cause du symbole @
. Je l'ai enlevé et il a bien fonctionné.
{
SyntaxError: Unexpected character '@' at JS_Parse_Error.get
(eval at <anonymous> (C:\xampp\htdocs\catch\node_moles\uglify-js\tools\node.js:21:1),
<anonymous>:86:23) at formatError (util.js:649:15)
at formatValue (util.js:554:18)
at formatProperty (util.js:795:15)
at util.js:655:12
at Array.map (native)
at formatObject (util.js:654:15)
at formatValue (util.js:593:16)
at inspect (util.js:186:10)
at exports.format (util.js:72:24)
message: 'Unexpected character \'@\'',
filename: 'all.min.css', line: 1, col: 0, pos: 0 },
plugin: 'gulp-uglify',
....
....
}
j'ai eu le même problème et il est venu à un dossier js qui donnait des problèmes. Le plus gros problème était que j'avais 10 fichiers js mais après un petit détour, mon problème n'était pas d'ajouter ;
puisque cela va minifier votre code, cela n'a pas d'importance que vous utilisiez ES6 vous devez ajouter ;
à la fin de votre code ou la minification ne fonctionnera pas.