Я в некотором роде новичок в создании модулей, и мне было интересно узнать о файле module.exports, и я жду, когда завершатся асинхронные функции (например, функция монго-соединения) и будет экспортирован результат. Переменные корректно определяются с использованием async / await в модуле, но при попытке записать их в журнал, запрашивая модуль, они отображаются как неопределенные. Если бы кто-то мог указать мне правильное направление, это было бы здорово. Вот код, который я получил до сих пор:
// module.js
const MongoClient = require('mongodb').MongoClient
const mongo_host = '127.0.0.1'
const mongo_db = 'test'
const mongo_port = '27017';
(async module => {
var client, db
var url = `mongodb://${mongo_host}:${mongo_port}/${mongo_db}`
try {
// Use connect method to connect to the Server
client = await MongoClient.connect(url, {
useNewUrlParser: true
})
db = client.db(mongo_db)
} catch (err) {
console.error(err)
} finally {
// Exporting mongo just to test things
console.log(client) // Just to test things I tried logging the client here and it works. It doesn't show 'undefined' like test.js does when trying to console.log it from there
module.exports = {
client,
db
}
}
})(module)
А вот js, для которого требуется модуль
// test.js
const {client} = require('./module')
console.log(client) // Logs 'undefined'
Я достаточно хорошо знаком с js и все еще активно изучаю и изучаю такие вещи, как async / await и подобные функции, но да ... Я не могу понять это на 100% *