错误:尝试使用gulp将文件上传到FTP时写EPIPE

时间:2018-06-27 18:53:10

标签: javascript node.js ftp gulp vinyl-ftp

我有一项任务是使用FTP将一些样式表部署到服务器,大约80%的时间出现此错误,

Error: write EPIPE
  at _errnoException (util.js:1022:11)
  at WriteWrap.afterWrite [as oncomplete] (net.js:880:14)

我正在使用vinyl-ftp上传文件,如此处的代码所示,

var conn = ftp.create({
    host: 'host',
    user: 'user',
    password: 'pass',
    parallel: 10,
    idleTimeout: 10000,
    reload: true,
    secure: true,
    secureOptions: {rejectUnauthorized: false},
    log: gutil.log
});

// What files to transfer over (can be used in case there are more files to be uploaded in the future)
var globs = [
    localDir + '/' + jobName + 'Default.css'
];

gutil.log("Local File: " + globs[0]);

var remoteDir = '/' + environment + '/css/' + clientName + '/' + jobName;

gutil.log("Remote Dir: " + remoteDir);

return gulp.src(globs, {buffer: false}).pipe(conn.dest(remoteDir));

我要上传到的服务器正在使用FTP-SSL(显式AUTH TLS)。我不确定这是否是导致问题的原因,但是我尝试捕获错误并在process.stdout中添加onerror事件,但是它们都不起作用。错误确实触发后,它将一个空文件上传到我的服务器。

很高兴找到对此或更佳的FTP软件包的解决方案。

编辑1:我在Windows上。

2 个答案:

答案 0 :(得分:0)

您将rsync用于通过SSH连接同步本地和服务器 https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

答案 1 :(得分:0)

最后只是说了一下拧紧它,然后改变了我使用的模块。 node-ftp仅在大约5%的时间中抛出EPIPE错误,而原始时间为80%。您还可以捕获到有用的错误,因为我捕获了该错误并尝试再次上传该文件。