0

我在通过 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']);

文件夹结构 文件夹结构图片

4

1 回答 1

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']);

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

于 2018-10-12T18:52:44.053 回答