我有一个gulpfile.js
,它有很多任务。
我注意到我的gulp任务正在运行,但在完成后他们不会退出/终止。我必须使用control + c
退出。
我经历了一个讨论类似问题的线程,但它使用的是gulp-mocha,插件中存在问题。
就我而言,我也知道造成这个问题的原因。我已将我已写入的js(edgecaset.js
)文件放入我的gulp文件中(其中一个任务使用该文件中的函数)。它是一个简单的文件,其中一个函数与rest api交互。如果我不需要该文件,一切都很好。
我只导出要在gulp文件中使用的edgecast.js
文件中的一个函数。它调用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');
答案 0 :(得分:2)
发现问题。原来gulp任务没有退出,因为FTP连接处于打开状态并等待它关闭