#javascript #node.js
#javascript #node.js
Вопрос:
Я пытаюсь заменить родительскую папку пути именем по моему выбору.
exports.uploadDirectory = async function(dir, customer) {
var fullPathArray = [];
var params = [];
// Read all folders, subfolder and files and add them to an array
fs.readdirSync(dir).forEach(file => {
let fullPath = path.join(dir, file);
if (fs.lstatSync(fullPath).isDirectory()) {
exports.uploadDirectory(fullPath);
} else {
fullPathArray.push(fullPath);
}
});
// Loop through each file found and add it to the object params array
fullPathArray.forEach(function(value){
let init_value = value.split(//(. )/)[1]; // Removing old parent folder
console.log(customer '/' init_value); // Thought this may work but returns the below
params.push({ Bucket: config.S3.bucket, Key: init_value, Body: fs.createReadStream(value) });
});
// More Stuff here
};
Печатает журнал консоли
undefined/New Folder 2/test22.js
myCustomer/index.html
myCustomer/test.js
Как вы можете видеть, первый элемент, у которого есть подкаталог, возвращает undefined. Но файлы в родительском каталоге работают нормально.
Ожидаемый
myCustomer/New Folder 2/test22.js
myCustomer/index.html
myCustomer/test.js
Редактировать
значение равно;
New Folder/New Folder 2/test22.js
New Folder/index.html
New Folder/test.js
init_value — это;
New Folder 2/test22.js
index.html
test.js
Вызов
exports.handler = async (event) => {
await content.uploadDirectory("./New Folder", "myCustomer");
};
Комментарии:
1. не могли бы вы добавить подробную информацию о
value
консоли. зарегистрируйте его вышеlet init_value
?2. @hgb123 только что добавлено выше.
3. Я воспроизвел в своем локальном и не вижу ничего плохого imgur.com/a/NFh0EPB
4. Ага. Это определение. помогает! У меня есть идея, что может быть не так. Я использую AWS Lambda для этого, и способ / где я вызываю функцию, может быть причиной этого. Я попробую что-нибудь и отправлю обновление.
5. Когда я объявляю и назначаю локальную переменную ‘customer’, как у вас, она работает нормально. Но когда я передаю его в качестве аргумента в функции, это не так. Странно.
Ответ №1:
Кажется, что проблема заключается здесь
exports.uploadDirectory(fullPath)
Вы забыли вызвать его с помощью customer, это должно быть
exports.uploadDirectory(fullPath, customer)