我正在尝试在 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-server
atlocalhost:3005
现在 portInUse 函数的输出表明服务器已启动,输出如下:
[10:33:56] 1 false
[10:33:56] 2 true
但是如果我localhost:3005
在 gulp 任务完成后去,我看不到任何服务器正在运行。可能是什么原因?