Есть локальный сервер:
const
express = require('express'),
server = express(),
files = [
'Collapse.mp3',
'Eidolon.mp3'
];
server.listen(8080);
server.use(express.static('dist'));
server.get('/', function(request, response) {
response.send(__dirname + '/dist/index.html');
response.end();
});
for (var i = 0; i < files.length; i++) {
server.get('/dist/downloads/' + files[i], function(request, response) {
response.download(__dirname + '/dist/downloads/' + files[i]);
});
}
Но не понимаю почему не работает последний цикл для загрузки двух файлов. Выводил при помощи console.log, пути правильные, но при попытке загрузить пишет: Error: ENOENT: no such file or directory, stat 'D:\Documents\3-2_web_file_server\dist\downloads\undefined'.
При таком формате все работает:
server.get('/dist/downloads/Collapse.mp3', function(request, response) {
response.download(__dirname + '/dist/downloads/Collapse.mp3');
});
server.get('/dist/downloads/Eidolon.mp3', function(request, response) {
response.download(__dirname + '/dist/downloads/Eidolon.mp3');
});
Но так не хочется делать так как файлов может быть больше и для каждого не хочется писать отдельный запрос. Подскажите пожалуйста в чем проблема и как это правильнее реализовать. Спасибо.
В чём тут дело: переданная функция вызывается после того как цикл отработал и значение переменной i
навсегда установилось равным 2
. По такому индексу нет значения в массиве.
var files = ['Collapse.mp3', 'Eidolon.mp3'];
for( var i = 0; i < files.length; ++i ) {
doSthWithCallbacks(`a-${files[i]}-b`, function() {
console.log(i, files[i]);
});
}
function doSthWithCallbacks(str, cb) {
console.log(`str=${str}`);
setTimeout(cb, 200);
}
Как это обойти - использовать let
для объявления переменной i
или:
var files = ['Collapse.mp3', 'Eidolon.mp3'];
files.forEach((file) => {
doSthWithCallbacks(`a-${file}-b`, function() {
console.log(file);
});
});
function doSthWithCallbacks(str, cb) {
console.log(`str=${str}`);
setTimeout(cb, 200);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ребят, вопрос очень странно такой задавать, но я негде не нашел никакой информации по поводу этого
У меня есть компонент, в который через props приходит целое число (каждый раз разное)Вопрос, как создать несколько блоков у компоненте в зависимости...
Столкнулся с проблемой - сервер выдачу делает 4,5 секунды