Ошибка: написать EPIPE при попытке загрузить файл на FTP с помощью gulp

У меня есть задача развернуть некоторые таблицы стилей на сервере с использованием FTP, и примерно в 80% случаев я получаю эту ошибку,

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

Я использую винил-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 (Explicit AUTH TLS). Я не уверен, что это вызывает проблему, но я попытался отловить ошибку и добавить событие onerror в process.stdout, но ни один из них не работает. Когда ошибка возникает, он загружает на мой сервер пустой файл.

Было бы здорово найти решение для этого или, еще лучше, другого FTP-пакета.

Изменить 1: Я в Windows.

Вы пробовали parallel: 3 или что-то меньше 10, чтобы посмотреть, поможет ли это? И conn.newer, чтобы избежать ненужных загрузок? Может немного улучшить производительность. Я использую винил-ftp и никогда не получаю эту ошибку, и обычно я передаю до 60 файлов за раз.

Mark 29.06.2018 05:17

У меня была такая ошибка, когда сервер был переполнен и некуда было писать файлы

yaroslawww 13.09.2019 12:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
1 140
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы используете rsync для синхронизации локального сервера и сервера с подключением по SSH. https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

Должен был быть более конкретным, я на Windows.

Matthew Beaudin 27.06.2018 21:16
Ответ принят как подходящий

В конце концов, я сказал, что винт, и поменял, какой модуль я использовал. узел-ftp вызывает ошибку EPIPE только в 5% случаев по сравнению с исходными 80%. Вы также можете поймать ошибку, которая полезна, потому что я поймаю ее и снова попытаюсь загрузить файл.

Другие вопросы по теме