Проблема заключается в том, что при экспорте переменных из другого .js файла через module.exports переменные undefined. Как я понимаю запрос выполняется ассинхронно и не успевает получить значение переменной перед ее применением. Есть какие-либо решения данного вопроса?
Require - это очень старая штука. Лучше переходи на js module(import/export. Link: https://doka.guide/js/modules/). А если говорить про require, то не слышал, чтобы он работал асинхронно. Вероятнее всего не так экспортируешь. Вот статья про require: https://habr.com/ru/post/217901/
Gumus, https://stackoverflow.com/questions/38296667/getting-unexpected-token-export Я вроде как нашел суть проблемы и ее решение Если вы используете NodeJS v14.13.0 или новее (который поддерживает ESM), вы можете включить его, установив "type":"module"в вашем проекте package.json Остался один момент, куда именно прописывать "type":"module". { "name": "none", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node bot.js", "dev": "nodemon bot.js" }, "author": "RichPerson", "license": "ISC", "devDependencies": { "nodemon": "^2.0.19" }, "dependencies": { "chalk": "^4.1.2", "express": "^4.18.1", "telegraf": "3.39" } } Код { "name": "none", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node bot.js", "dev": "nodemon bot.js" }, "author": "RichPerson", "license": "ISC", "devDependencies": { "nodemon": "^2.0.19" }, "dependencies": { "chalk": "^4.1.2", "express": "^4.18.1", "telegraf": "3.39" } }
Gumus, Спасибо, помогло, но суть заключается в том что можно использовать только модуль ES либо только CommonJS(require). Теперь require оно не определяет, как и не определяло export. Буду тогда через import импортировать все библиотеки
Залей сурсы, или хотя бы тут части кода. Сам по себе require уже синхронный, думаю ошибка в другом. Пиши я взгляну, можешь в телегу
Extremum, //index.js server.use(express.static(__dirname)) const user = '5100771106' const uniqId = '4545445' server.get('/', function(request, response){ response.sendFile(__dirname + '/index.html') }) server.use('/' + uniqId + '.json', function(request, response){ if(fs.existsSync(path.join(__dirname + '/users/' + user + '/Url/' + uniqId + '.json'))){ let IdUrl = path.join(__dirname + '/users/' + user + '/Url/' + uniqId + '.json') //let UrlInfo = JSON.parse(fs.readFileSync(IdUrl)) response.sendFile(__dirname + '/index.html') const NewTransition = true module.exports = { NewTransition, user } else{ console.log('Файл не найден') response.sendStatus(404) } }) server.listen(3000) console.log('Сервер запущен на 3000') module.exports = server //bot.js const { user, server, NewTransition } = require('./index.js') console.log(user) JavaScript //index.js server.use(express.static(__dirname)) const user = '5100771106' const uniqId = '4545445' server.get('/', function(request, response){ response.sendFile(__dirname + '/index.html') }) server.use('/' + uniqId + '.json', function(request, response){ if(fs.existsSync(path.join(__dirname + '/users/' + user + '/Url/' + uniqId + '.json'))){ let IdUrl = path.join(__dirname + '/users/' + user + '/Url/' + uniqId + '.json') //let UrlInfo = JSON.parse(fs.readFileSync(IdUrl)) response.sendFile(__dirname + '/index.html') const NewTransition = true module.exports = { NewTransition, user } else{ console.log('Файл не найден') response.sendStatus(404) } }) server.listen(3000) console.log('Сервер запущен на 3000') module.exports = server //bot.js const { user, server, NewTransition } = require('./index.js') console.log(user)
Если тебе нужно экспортировать несколько сущностей то сделай это так: module.exports = { server, user, NewTransition } JavaScript module.exports = { server, user, NewTransition }