Как правильно экспортировать ответ моей асинхронной функции. Node.JS
Есть функция parser.js
const getSongsObject = async () => {
for (let i = 0; i < names.length; i++) {
try {
const metadata = await mm.parseFile(`${__dirname}\\${names[i]}`);
let picture = metadata.common.picture[0];
let encodedPicture = `data:${picture.format};base64,${picture.data.toString('base64')}`;
let trackDuration = metadata.format.duration;
let trackTitle = metadata.common.title;
let trackArtist = metadata.common.artist;
let id = Date.now();
let trackObj = { id, trackTitle, trackArtist, trackDuration, encodedPicture }
songsObjectArray.push(trackObj);
} catch (error) {
console.error(error.message);
}
} return songsObjectArray;
}
const songsArray = getSongsObject().then(() => {});
module.exports = songsArray
нужно ее return экспортировать в main.js
const getSongsObject = require('../music/dataParser')
const exportedValue = async () => {
await getSongsObject().then((result) =>{
console.log(result);
})
}
exportedValue() // getSongsObject is not a function
Ответы (1 шт):
Автор решения: Mirikkingg
→ Ссылка
Я возвращал пуш (push возвращает длину массива), и не правильно экспортировал.
const getSongsObject = async () => {
for (let i = 0; i < names.length; i++) {
try {
const metadata = await mm.parseFile(`${__dirname}\\${names[i]}`);
let picture = metadata.common.picture[0];
let encodedPicture = `data:${picture.format};base64,${picture.data.toString('base64')}`;
let trackDuration = metadata.format.duration;
let trackTitle = metadata.common.title;
let trackArtist = metadata.common.artist;
let id = Date.now();
let trackObj = { id, trackTitle, trackArtist, trackDuration, encodedPicture }
songsObjectArray.push(trackObj);
} catch (error) {
console.error(error.message);
}
} return songsObjectArray;
}
module.exports = {
getSongsObject
}
// main
const dp = require('../music/dataParser')
dp.getSongsObject().then((result) => {console.log(result)})