2015-03-25 82 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