Gulp任务不会退出

时间:2015-07-08 16:43:39

标签: javascript node.js gulp nodes

我有一个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'); 

1 个答案:

答案 0 :(得分:2)

发现问题。原来gulp任务没有退出,因为FTP连接处于打开状态并等待它关闭