2014-09-26 5 views
2

Я использую gulp-livereload в моих gulpfile.js.Почему авария с помощью gulp-livereload с ошибкой: слушайте EADDRINUSE?

Он отлично работает для файлов CSS, но сбой для файлов HTML.

Например, каждый раз, когда я сохраняю index.html, gulp падает с ошибкой ниже.

Почему это происходит?

DEMO HERE

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: listen EADDRINUSE 
    at errnoException (net.js:904:11) 
    at Server._listen2 (net.js:1042:14) 
    at listen (net.js:1064:10) 
    at Server.listen (net.js:1138:5) 
    at Function.app.listen (/Users/mishamoroshko/github-explorer/node_modules/express/lib/application.js:556:24) 
    at Gulp.<anonymous> (/Users/mishamoroshko/github-explorer/gulpfile.js:64:10) 
    at module.exports (/Users/mishamoroshko/github-explorer/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:34:7) 
    at Gulp.Orchestrator._runTask (/Users/mishamoroshko/github-explorer/node_modules/gulp/node_modules/orchestrator/index.js:273:3) 
    at Gulp.Orchestrator._runStep (/Users/mishamoroshko/github-explorer/node_modules/gulp/node_modules/orchestrator/index.js:214:10) 
    at /Users/mishamoroshko/github-explorer/node_modules/gulp/node_modules/orchestrator/index.js:279:18 

ответ

3

Я не понимаю, почему вы загружаете connect-livereload, вы можете просто использовать глотком плагин. Ваша ошибка может быть конфликтом с этими двумя, поскольку они используют одни и те же порты.

Так изменить Gulpfile к:

var livereload = require('gulp-livereload'); 

gulp.task('watch', function() { 

    livereload.listen(); 

    gulp.watch(paths.scripts, ['jshint']).on('change', livereload.changed); 
    gulp.watch(paths.styles, ['less']).on('change', livereload.changed); 
    gulp.watch(paths.views).on('change', livereload.changed); 

}); 

gulp.task('less', function() { 
    return gulp.src('./app/app.less') 
    .pipe(less({ 
     paths: [] 
    })) 
    .pipe(gulp.dest('./app')) 
    .pipe(livereload()); 
}); 

И удалить все connect-livereload части.

+0

Спасибо, это имеет смысл! Я обновил [репо] (https://github.com/moroshko/github-explorer) с вашим предложением. Проблема в том, что она перезагружает файл '* .less' (а не * .css), что не очень полезно. Кроме того, когда я изменяю файл '* .js' (например,' home-controller.js'), он говорит, что 'home-controller.js был перезагружен', но не обновляет браузер. Есть идеи? –

+0

Удовлетворение первой проблемы, возможно, захотите наложить трубку после завершения преобразования 'less', поэтому в конце вашей задачи' less'. Не могли бы вы попробовать это с помощью 'jshint'task? Обновите мой ответ для примера –

+0

Пробовал это, но теперь это та же проблема, что и в JS-файлах. В нем говорится, что «app.css был перезагружен», но не обновляет браузер. Я также попытался перетащить печенье в задачу jshint, но не повезло, браузер не обновляется (также есть побочный эффект перезагрузки ВСЕХ скриптов, а не только тот, который я модифицировал). Опять же, я обновил репо. –

6

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