2016-12-20 19 views
3

Я изучаю модуль grunt-inline и столкнулся со следующей проблемой. У меня конфиг следующее задание по:Почему GruntJS не прерывает выполнение, если выбрано исключение?

grunt.initConfig({ 
    inline: { 
    options: { 
     uglify: true 
    }, 
    dist: { 
     src: 'src/index.html', 
     dest: 'dist/index.html' 
    } 
    } 
}); 

Из конфигурации выше uglify: true опция означает выполнение UglifyJS.minify на this line:

var c = options.uglify ? UglifyJS.minify(inlineFilePath).code : grunt.file.read(inlineFilePath); 

Проблема заключается в том, что если UglifyJS.minify бросает исключение (который я просто сталкивался с) команда grunt inline не выйдет из строя, но завершена.

Итак, проблема с этим модулем, когда у меня отсутствуют флаги какого-то гранта?

Было бы здорово, если бы вы могли объяснить мне, как разбить выполнение ворчания на любые исключения.

EDIT: Кроме того, я заметил, что если я поймаю исключение и повторно бросить его сам он ломает ворчание хорошо, как в следующем:

try { 
    var c = options.uglify ? UglifyJS.minify(inlineFilePath).code : grunt.file.read(inlineFilePath); 
} catch(e) { 
    throw new Error(e.message); 
} 

Так почему does't исключение из UglifyJS.minify(inlineFilePath).code перерыва gruntjs задача?

ответ

2

Похоже, что проблема с модулем. Кажется, я не могу найти способ установить флаг и вернуть эти ошибки. Можно попробовать заменить эту строку с:

var c; 
if(options.uglify){ 
    try{ 
     c = UglifyJS.minify(inlineFilePath).code 
    }catch(err){ 
     grunt.log.error(err);//catch error and send to grunt 
    } 
}else{ 
     c=grunt.file.read(inlineFilePath); 
} 

UPDATE: Так почему does't исключение из UglifyJS.minify (inlineFilePath) .Code сломать gruntjs задачу?

Похоже, что это проблема с самой ошибкой: JS_Parse_Error Это не правильно построенная ошибка и не попадает в схватку. Похоже, вы должны поймать его самостоятельно и завернуть его в new Error(), как вы сделали выше, пока исправление не идет в см ссылку ниже.

https://github.com/mishoo/UglifyJS2/issues/348

+0

Спасибо за ответ. Но почему, если я могу поймать исключение из 'UglifyJS.minify', это не перерыв? См. Мое обновленное сообщение: – Erik

+0

Grunt обрабатывает исключения, прикрепленные к объекту grunt. Объект grunt должен использоваться для связи с gruntjs. http://gruntjs.com/api/grunt – Revive

+0

Это немного неправда. Как я описал в обновлении моего сообщения выше, хрюк ломается, если я сам выброшу исключение. – Erik