Gulp 任务不退出
Gulp tasks do not exit
我有一个 gulpfile.js
有很多任务。
我注意到我的 gulp 任务 运行,但完成后它们没有 exit/terminate。我必须使用 control + c
退出。
我浏览了一个讨论类似问题的线程,但它使用的是 gulp-mocha 并且插件中存在问题。
就我而言,我也知道是什么导致了这个问题。我需要一个我编写的 js(edgecaset.js
) 文件到我的 gulp 文件中(其中一个任务使用该文件中的一个函数)。它是一个简单的文件,具有一个与其余交互的功能 api。如果我不需要那个文件,一切都很好。
我只从 edgecast.js
文件中导出一个函数,以便在 gulp 文件中使用。它调用了 setTimeOut
函数(这可能是问题所在吗?)
谁能帮我找出问题所在?
var main = function () {
console.log(config.edgecast.username);
ftp.put(config.ftp.local_path, config.ftp.remote_path, function(hadError) {
if (!hadError) {
console.log('File transferred successfully');
rest.put(config.edgecast.purge_url, purgeOptions).on('complete', function(data, response) {
if (response.statusCode != 200)
console.log('Purge failed');
else {
console.log('Purge request Issued');
purgeID = data.Id;
setTimeout(function() {
rest.get(config.edgecast.get_purge_url + purgeID, purgeOptions).on('complete', function(data) {
if (data.CompleteDate) {
console.log('Purge completed on ' + data.CompleteDate);
rest.put(config.edgecast.load_url, loadOptions).on('complete', function(data, response) {
if (response.statusCode == 200)
console.log('Asset Loaded');
else {
console.log('Load Failed');
console.log(response.statusCode);
}
});
}
});
}, 180000);
}
});
} else console.log('File Transfer Failed. ' + hadError);
ftp.raw.quit(function(err) {
if (err) return console.error(err);
});
});
};
以上是我从 edgecast.js 文件导出的函数。这是文件中的唯一函数。剩下的只是变数。然后在 gulpfile.js 中有
var edgecast = require('./edgecast.js');
而这个 require 语句导致了所有问题。
edgecast.js 文件导入了以下库。
var rest = require('restler'),
config = require('./config'),
JSFtp = require('jsftp');
找到问题了。结果 gulp 任务不会退出,因为 FTP 连接保持打开状态,它们会一直等到它关闭
我有一个 gulpfile.js
有很多任务。
我注意到我的 gulp 任务 运行,但完成后它们没有 exit/terminate。我必须使用 control + c
退出。
我浏览了一个讨论类似问题的线程,但它使用的是 gulp-mocha 并且插件中存在问题。
就我而言,我也知道是什么导致了这个问题。我需要一个我编写的 js(edgecaset.js
) 文件到我的 gulp 文件中(其中一个任务使用该文件中的一个函数)。它是一个简单的文件,具有一个与其余交互的功能 api。如果我不需要那个文件,一切都很好。
我只从 edgecast.js
文件中导出一个函数,以便在 gulp 文件中使用。它调用了 setTimeOut
函数(这可能是问题所在吗?)
谁能帮我找出问题所在?
var main = function () {
console.log(config.edgecast.username);
ftp.put(config.ftp.local_path, config.ftp.remote_path, function(hadError) {
if (!hadError) {
console.log('File transferred successfully');
rest.put(config.edgecast.purge_url, purgeOptions).on('complete', function(data, response) {
if (response.statusCode != 200)
console.log('Purge failed');
else {
console.log('Purge request Issued');
purgeID = data.Id;
setTimeout(function() {
rest.get(config.edgecast.get_purge_url + purgeID, purgeOptions).on('complete', function(data) {
if (data.CompleteDate) {
console.log('Purge completed on ' + data.CompleteDate);
rest.put(config.edgecast.load_url, loadOptions).on('complete', function(data, response) {
if (response.statusCode == 200)
console.log('Asset Loaded');
else {
console.log('Load Failed');
console.log(response.statusCode);
}
});
}
});
}, 180000);
}
});
} else console.log('File Transfer Failed. ' + hadError);
ftp.raw.quit(function(err) {
if (err) return console.error(err);
});
});
};
以上是我从 edgecast.js 文件导出的函数。这是文件中的唯一函数。剩下的只是变数。然后在 gulpfile.js 中有
var edgecast = require('./edgecast.js');
而这个 require 语句导致了所有问题。
edgecast.js 文件导入了以下库。
var rest = require('restler'),
config = require('./config'),
JSFtp = require('jsftp');
找到问题了。结果 gulp 任务不会退出,因为 FTP 连接保持打开状态,它们会一直等到它关闭