const csvFilePath='data.csv'
const csv=require('csvtojson')
let userDB;
const loadUserDB = async() => {
userDB = await csv().fromFile(csvFilePath);
console.log(userDB[0]);
return userDB;
};
// here this always be undefined - why?
// when the index.js file import this module, this file going to run line by line,
// means first the program just registers the userDB and the loadUserDB variables
// without of course executing the function
// so basically this files run in this form only once
// this console.log never going to run after the loadUserDB
console.log(userDB[0]);
module.exports = {
loadUserDB,
userDB
}
Мой совет проверить, как работают области и замыкания в JavaScript.
Опять же, у вас будет неопределенное значение userDB
в момент импорта и до выполнения loadUserDB
, Этот модуль (файл) запускается только один раз в этой форме.
После вызова loadUserDB
, userDB
предполагается, что у него есть другое значение, отличное от undefined.
Так что да, это значение не всегда не определено, просто вопрос времени, когда вы хотите получить к нему доступ.
const path = require('path');
const csvFilePath = path.join(__dirname, './data.csv')
const csv = require('csvtojson')
let userDB;
const loadUserDB = async() => {
userDB = await csv().fromFile(csvFilePath);
};
module.exports = {
loadUserDB,
userDB
}