Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何检查是否正在运行“吞咽”任务?_Node.js_Gulp_Development Environment_Livereload - Fatal编程技术网

Node.js 如何检查是否正在运行“吞咽”任务?

Node.js 如何检查是否正在运行“吞咽”任务?,node.js,gulp,development-environment,livereload,Node.js,Gulp,Development Environment,Livereload,我正在运行livereload服务器的开发。这是gulpfile.js中的默认任务 var gulp = require('gulp'); var server = require('gulp-server-livereload'); gulp.task('default', function() { gulp.src(basePath) .pipe(server({ livereload: true, host: domain, port: 8

我正在运行livereload服务器的开发。这是gulpfile.js中的
默认任务

var gulp = require('gulp');
var server = require('gulp-server-livereload');

gulp.task('default', function() {
  gulp.src(basePath)
    .pipe(server({
      livereload: true,
      host: domain,
      port: 80,
    }));
});
然后还有另一个任务,
gulpexport
,它需要这个正在运行的web服务器。如果启动另一个端口,则会出现错误(因为端口80和35729正忙)。所以我的逻辑是:

如果
gulp default
已经在运行,请直接进入噩梦.js任务
否则,启动服务器并继续执行噩梦.js任务

所以我的问题是,我不知道一种可靠的方法来检查吞咽任务是否正在运行

我可以用吞咽法吗?还是从节点层面? 如果可能的话,我不想将打开的端口或Web服务器地址作为代理检查“是的,默认任务正在运行”

我可以用吞咽法吗?还是从节点层面?如果可能的话,我不想将打开的端口或Web服务器地址作为代理检查“是的,默认任务正在运行”

到目前为止,我还没有找到任何
gulp
方法,所以这里是检查繁忙端口。如果是,则推断服务器正在运行并继续执行
导出
任务,如果不是,则启动服务器

var server = require('gulp-server-livereload');

gulp.task('export', function () {

  var net = require('net');

  var portFree = function(port, callback) {
    var server = net.createServer(function(socket) {
      socket.write('Echo server\r\n');
      socket.pipe(socket);
    });

    server.listen(port, '127.0.0.1');
    server.on('error', function (e) {
      callback(false);
    });
    server.on('listening', function (e) {
      server.close();
      callback(true);
    });
  };

  portFree(35729, function(returnValue) {
    // If server isn't already running, start it.
    if(returnValue) {
      gulp.src(basePath)
      .pipe(server({
        livereload: true,
        host: 'http://localhost'
      }));
    }
  });

  // Do the actual export tasks...
});
我可以用吞咽法吗?还是从节点层面?如果可能的话,我不想将打开的端口或Web服务器地址作为代理检查“是的,默认任务正在运行”

到目前为止,我还没有找到任何
gulp
方法,所以这里是检查繁忙端口。如果是,则推断服务器正在运行并继续执行
导出
任务,如果不是,则启动服务器

var server = require('gulp-server-livereload');

gulp.task('export', function () {

  var net = require('net');

  var portFree = function(port, callback) {
    var server = net.createServer(function(socket) {
      socket.write('Echo server\r\n');
      socket.pipe(socket);
    });

    server.listen(port, '127.0.0.1');
    server.on('error', function (e) {
      callback(false);
    });
    server.on('listening', function (e) {
      server.close();
      callback(true);
    });
  };

  portFree(35729, function(returnValue) {
    // If server isn't already running, start it.
    if(returnValue) {
      gulp.src(basePath)
      .pipe(server({
        livereload: true,
        host: 'http://localhost'
      }));
    }
  });

  // Do the actual export tasks...
});

在开发环境中,您可以在控制台上或使用日志显示信息。在开发环境中,您可以在控制台上或使用日志显示信息。