Node.JS - Программа завершает работу до получения обратного вызова - PullRequest
0 голосов
/ 10 апреля 2019

Я использую WebdriverIO v4 для создания HTML-отчетов о прохождении / неудаче различных тестов.Я собираю результаты тестов через несколько прослушивателей событий (например, this.on ('test: start'), this.on ('suite: end') и т. Д.).Последним событием является this.on ('end'), которое вызывается, когда все тесты завершили выполнение.Именно здесь результаты теста сортируются в зависимости от того, на какой операционной системе он запущен, браузере и т. Д.

Кажется, проблема в том, что моя программа завершает работу, прежде чем разрешить функции завершить или получить обратный вызов отфункция.

Вот суть моего кода:

let aws = require('aws-sdk');

aws.config.update({
    //Censored keys for security
    accessKeyId: '*****',
    secretAccessKey: '*****',
    region: 'us-west-2'
});

let s3 = new aws.S3({
    apiVersion: "2006-03-01",
});

/*
*
* Here is where the program generates HTML files
*
*/

//The key and data fields are not actually asterisks, this is just to show that key and data fields are initialized at this point
let key = "****"
let data = "****"

s3.upload({
    Bucket: 'html',
    Key: key,
    Body: data
}, function (err, data) {
    if (err) {
        console.log("Error: ", err);
    }
    if (data) {
        console.log("Success: ", data.Location);
    }
}).on('httpUploadProgress', event => {
    console.log(`Uploaded ${event.loaded} out of ${event.total}`);
});

Когда тесты запущены, отображаются результаты, а затем программа завершается.Программа не ожидает возврата, поэтому сообщение об ошибке или об ошибке не отображается.Файлы не загружаются на S3.

Я знаю, что s3.upload() работает, потому что, если я запускаю код ранее в проекте с фиктивными данными, загрузка завершится успешно.Но в конце моего проекта программа завершается до окончания загрузки.

Как я могу исправить эту проблему?Как я могу гарантировать, что файлы будут загружены на S3 до завершения программы?Как я могу увидеть обратный звонок до завершения?Спасибо!

...