2015-03-25 122 views
1

我想使用BrowserSync啓動我的NodeJS應用程序,但它似乎無法正常工作。Gulp BrowserSync和npm start

錯誤消息:錯誤:聽EADDRINUSE

編輯#1:

我發現這種方式來解決我的問題。

gulp.task('sync', ['start', 'watch'], function(cb) { 
 
    browserSync.init({ 
 
     files: ['**/*'], 
 
     proxy: 'http://localhost:3000', 
 
     port: 4000 
 
    }); 
 
}); 
 

 
gulp.task('start', function() { 
 
    var called = false; 
 
    return nodemon({ 
 
     script: './bin/www', 
 
     watch: ['Application.js'] 
 
    }).on('start', function onStart() { 
 
     if (!called) { 
 
      cb(); 
 
     } 
 
     called = true; 
 
    }).on('restart', function onRestart() { 
 
     setTimeout(function reload() { 
 
      browserSync.reload({ 
 
       stream: false 
 
      }); 
 
     }, 500); 
 
    }); 
 
});

+0

請參見[56, 「問題‘’包括在他們的頭銜?」 標籤(http://meta.stackexchange.com/questions/19190/should-questions-包括標籤在他們的標題),其中共識是「不,他們不應該」!並請爲您的問題找到更有意義的標題! – 2015-03-25 10:28:35

回答

5

EADDRINUSE意味着端口號,其listen()嘗試已在使用到服務器綁定。所以,就你而言,必須在端口80上運行服務器。如果您在此端口上運行另一臺網絡服務器,您將收到EADDRINUSE錯誤。

var gulp = require('gulp'); 
var browserSync = require('browser-sync'); 
var nodemon = require('gulp-nodemon'); 

gulp.task('default', ['browser-sync'], function() { 
}); 

gulp.task('browser-sync', ['nodemon'], function() { 
    browserSync.init(null, { 
     proxy: "http://localhost:5000", 
     files: ["**/*.*"], 
     browser: "google chrome", 
     port: 7000, 
    }); 
}); 

gulp.task('nodemon', function (cb) { 
    nodemon({ 
     script: './bin/www/app.js' 
    }) 
    .on('start', function() { 
     cb(); 
    }) 
    .on('error', function(err) { 
    // Make sure failure causes gulp to exit 
    throw err; 
    }); 
}); 

希望它能幫助:)

+0

這是行不通的:'不能GET /'在網頁上.. – tonymx227 2015-03-25 10:11:29

+0

你可以嘗試改變'port:8080'到其他一些你確定沒有被使用的端口,例如'8097' – 2015-03-25 10:17:28

+0

它不起作用... BrowserSync服務器啓動良好,但不是NodeJS應用程序...我想在同一端口啓動它們兩個。 – tonymx227 2015-03-25 10:23:02