Выпуск задания на Heroku случайным образом прекращает отправку файлов через FTP - PullRequest
0 голосов
/ 28 октября 2019

У меня есть процесс выпуска приложения, который работал нормально в течение недели или двух и теперь случайно прекратил работать. Мое приложение npm создается с помощью Heroku, а затем запускается задание по выпуску, которое отправляет статические файлы по FTP на другой хост. Для этого я использую библиотеку npm ftp. Это случайно перестало работать с ошибкой тайм-аута:

Error: Timeout while connecting to server
    at Timeout._onTimeout (/app/node_modules/ftp/lib/connection.js:304:24)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)

сценарий выпуска выглядит следующим образом:

const DIST_PATH = `dist/cineworld-planner`;
const filesList = readdirSync(join(process.cwd(), DIST_PATH));

const client = new Client();

function pushFiles() {
    const putFile = bindNodeCallback(client.put.bind(client));

    from(filesList).pipe(
        mergeMap(fileName => {
            const localPath = join(process.cwd(), DIST_PATH, fileName);
            console.log(`Putting path ${localPath} to remote ${fileName}`);
            return putFile(localPath, fileName);
        }, 1)
    ).subscribe({
        complete: () => client.end()
    });
}

client.on('ready', () => {
    console.log(`READY`);
    pushFiles();
});

client.on('error', (error: any) => {
    const code = error.code || 'NO_CODE';

    console.log(`ERROR: ${code}`);

    console.log(error);

    process.exit(1);
});

client.connect({
    user: process.env.FTP_USER,
    host: process.env.FTP_HOST,
    password: process.env.FTP_PASSWORD
});

Я спросил своего хоста, есть липроблемы, но все, что они сказали, - то, что IP-адрес, на котором мой сценарий сообщил, что он выполнялся, не был заблокирован.

Я проверил сценарий с моего домашнего компьютера, и он также отлично работает оттуда.

Это будет серьезной болью, если она перестанет работать. Я действительно не знаю, что еще попробовать.

Любая помощь получена с благодарностью.

1 Ответ

0 голосов
/ 30 октября 2019

Оказывается, что для меня исправление было таким же простым, как увеличение времени ожидания:

const connectOptions: Options = {
    user: process.env.FTP_USER,
    host: process.env.FTP_HOST,
    password: process.env.FTP_PASSWORD,
    connTimeout: 60000,
    pasvTimeout: 60000,
};

client.connect(connectOptions);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...