nodemon + browserSync gulp任务导致EADDRINUSE ::: 3000错误

时间:2018-10-11 01:42:56

标签: node.js express browser-sync nodemon gulp-task

我在通过gulp任务创建nodemon + browserSync时遇到问题。我在网上搜索了可能的解决方案。我查看了StackOverflow网站,但仍未找到解决我的问题的任何成功方法。我遇到了这个问题

events.js:167
      throw er; // Unhandled 'error' event
      ^
Error: listen EADDRINUSE :::3000

我不确定为什么在命令行中执行gulp时会收到此错误EADDRINUSE :::3000。我已经使用netstat -ano | findStr "9000"检查了端口,该端口没有被另一个进程调用。我不确定执行gulp任务时为什么会遇到此问题。有人可以提供一些指导吗?我将不胜感激,我用光了所有选项。

gulpfile.js

gulp.task('nodemon', function (cb) {
    var called = false;
    return nodemon({
      script: './server.js',
      ignore: [
        '../server/gulpfile',
        '../server/server.js',
        '../server/node_modules/'
      ],
    }).on('start', function () {
      if (!called) {
        cb();
        called = true;
      }
    }).on('restart', function () {
      setTimeout(function () {
        reload({ stream: false });
      }, 1000);
      });
  });

  gulp.task('browser-sync', ['nodemon'], function() {
   browserSync.init({
    proxy: 'http://localhost:9000',
    open: false,
    browser:'google-chrome',
    port: 9000, 
    notify: true
  });
});

// Static Server + watching scss/hbs files
gulp.task('serve', ['sass'], function() {

  browserSync.init({
      server: "./client"  
  });

  gulp.watch(['node_modules/**/*.scss', '../client/**/*.scss'], ['sass']);
  gulp.watch("client/views/partials/*.hbs").on('change', browserSync.reload);

});
 gulp.task('default', ['js','serve', 'browser-sync']);

文件夹结构 folder structure image

1 个答案:

答案 0 :(得分:0)

我之前曾发布过有关我一起使用nodemon和browserSync时遇到的错误的信息。我终于弄清楚了我遇到的问题。我收到 EARDINUSE3000 错误的原因是因为我在 gulpfile.js 中两次调用了browerSync。

gulp.task('nodemon', function (cb) {
    var called = false;
    return nodemon({
      script: './server.js',
      ignore: [
        '../server/gulpfile',
        '../server/server.js',
        '../server/node_modules/'
      ],
    }).on('start', function () {
      if (!called) {
        cb();
        called = true;
      }
    }).on('restart', function () {
      setTimeout(function () {
        reload({ stream: false });
      }, 1000);
      });
  });


  gulp.task('browser-sync', ['nodemon'], function() {
   browserSync.init({
    proxy: 'http://localhost:3000',
    open: false,
    browser:'google-chrome',
    port: 4000, 
    baseDir: 'build',
    notify: true,
  });

  gulp.watch(['node_modules/bootstrap/scss/bootstrap.scss', '../client/**/*.scss'],
  ['sass']);
  gulp.watch('client/**/*.hbs').on('change', browserSync.reload);
});

 gulp.task('default', ['js', 'browser-sync']);

对于以后遇到此问题的任何人,我希望这会有所帮助。