2014-09-26 38 views
2

我在我的gulpfile.js中使用gulp-livereload爲什麼gulp-livereload崩潰時發生錯誤:listen EADDRINUSE?

它對CSS文件工作正常,但對HTML文件崩潰。

例如,每次我節省index.html時,吞吐量崩潰,下面的錯誤。

這是怎麼發生的?

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被重新加載了,但不刷新瀏覽器。有任何想法嗎? – 2014-09-26 14:21:06

+0

哼,對於第一個問題,你可能想在'less'轉換完成後,對你的'livereload'進行管道,所以在'less'任務結束時。你可以用'jshint'task來試試嗎?更新我的答案舉個例子 – 2014-09-26 14:24:47

+0

試過了,但現在它和JS文件的問題一樣。它說「app.css已重新加載」,但不刷新瀏覽器。我也嘗試在jshint任務中使用livereload,但沒有運氣,瀏覽器沒有刷新(也有重新加載所有腳本的副作用,而不僅僅是我修改的腳本)。再次,我更新了回購。 – 2014-09-26 14:36:01

6

您用於提供文件的端口已經在該端口上偵聽。

相關問題