Я бы поставил console.log("Returned");
в конце вашего скрипта. Он должен быть вызван, но, возможно, одна из загрузок S3 висит.
Помимо этого у вас есть синтаксические ошибки:
- в строке 3 (отсутствует открытая скобка { и соответствующая закрывающая скобка имеет закрытие на скобка ), что он не должен)
- на линии 9 (точка с запятой ; вместо открытой скобкой { и закрывающей скобки следующим)
- цикл не хватает закрывающей скобки
- : вызов dbclient.zrangs отсутствует точка с запятой ; после
- объявление для downloader.on отсутствует точка с запятой ; (возможно, это не обязательно, но усложняет ситуацию, а большинство сторонников стиля Node.js используют их)
- Отсутствует точка с запятой ; после вызова doSomeUpload()
Существует семантическая ошибка или ненужный код:
- возвращение внутри пользователя.на() обратного вызова будет возвращаться из этого обратного вызова не нарушают цикл или возвращения из doSomeUpload()
Вот исправленный код с некоторыми simplications, называя улучшения и обработки ошибок:
var db = require("redis");
var dbclient = db.createClient();
function doSomeUpload(){
dbclient.zrangs("noper", 0, 5000, function(err, replies){
if (err){
console.error(err);
} else {
var uploadsRemaining = replies.length;
replies.forEach(function(reply){
// Upload the file with s3 client
uploader.on('end', function() {
uploadsRemaining--;
if (uploadsRemaining == 0){
console.log("Done!");
}
});
});
}
});
}
doSomeUpload();
Я думаю, что ошибка находится в коде, который не используется. Загрузка S3 может блокироваться, и это легко проверить, установив низкий тайм-аут, например, 10 секунд.
Это очень полезно использовать JSLint или редактор, который строит его или нечто подобное в (Emacs и WebStorm как делать): http://jslint.com/
запустить код через это, пока он не приходит в чистоте. Перед отправкой в онлайн-инструмент обязательно очистите код (удалите учетные данные или IP-код). Вероятно, лучше загрузить инструмент и запустить его локально или использовать редактор с проверкой кода JavaScript.
В процессе производства ваш код не должен содержать никаких ошибок или предупреждений. Это значительно ограничивает пространство для запутывания поведения во время работы.
Что у людей с понижением? Предоставьте комментарии или не уменьшайте их. Это особенно плохое поведение с новыми членами сообщества. –
Существуют такие переменные, как ** uploader **, которые не объявлены в предоставленном коде, и неясно, какие библиотеки используются. Наличие SSCCE очень помогло бы. Можете ли вы предоставить SSCCE? http://sscce.org/ –
Я понимаю, что вы не можете включить ключ доступа AWS или секретный ключ доступа AWS. Просто поставьте пустые строки для тех, если вы не позволяете SDK узла SDS по умолчанию загружать их из ** ~/.aws/credentials ** –