4

我正在尝试在 gulp 任务中运行 json-server,并且正在使用函数 portInUse 检查服务器是否运行。像这样:

var gulputil = require('gulp-util')
var run = require('gulp-run-command').default
var gulp = require('gulp')


const args = [
    'json-server --watch .\\src\\main\\app\\reactjs\\api\\db.json --port 3005'
]

var net = require('net');

var portInUse = 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(true);
    });
    server.on('listening', function (e) {
    server.close();
    callback(false);
    });
};

gulp.task("initLocalJsonServer", function() {
    portInUse(3005, function(returnValue) {
        gulputil.log('1 ' + returnValue);
    });

        run(args);

    portInUse(3005, function(returnValue) {
        gulputil.log('2 ' + returnValue);
    });
});

该命令是此处 args 的值,当我在命令行中运行它时按预期工作,因此命令或 json-server 本身没有任何问题。如果我运行它,我会看到json-serveratlocalhost:3005

现在 portInUse 函数的输出表明服务器已启动,输出如下:

[10:33:56] 1 false
[10:33:56] 2 true

但是如果我localhost:3005在 gulp 任务完成后去,我看不到任何服务器正在运行。可能是什么原因?

4

0 回答 0