Загрузка...

Как сделать синхронный запрос require?

Тема в разделе Node.js создана пользователем RichPerson 23 авг 2022. 195 просмотров

  1. RichPerson
    RichPerson Автор темы 23 авг 2022 Разработка - https://zelenka.guru/threads/4480553/ 2160 23 сен 2019
    Проблема заключается в том, что при экспорте переменных из другого .js файла через module.exports переменные undefined. Как я понимаю запрос выполняется ассинхронно и не успевает получить значение переменной перед ее применением. Есть какие-либо решения данного вопроса?
     
  2. Gumus
    Require - это очень старая штука. Лучше переходи на js module(import/export. Link: https://doka.guide/js/modules/). А если говорить про require, то не слышал, чтобы он работал асинхронно. Вероятнее всего не так экспортируешь. Вот статья про require: https://habr.com/ru/post/217901/
     
    1. Посмотреть предыдущие комментарии (4)
    2. RichPerson Автор темы
      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"

      }
      }
    3. Gumus
      RichPerson, можешь прямо под полем "main"
    4. RichPerson Автор темы
      Gumus, Спасибо, помогло, но суть заключается в том что можно использовать только
      модуль ES либо только
      CommonJS(require). Теперь require оно не определяет, как и не определяло export. Буду тогда через import импортировать все библиотеки
  3. Extremum
    Extremum 23 авг 2022 Не стоит температурить 263 24 июл 2018
    Залей сурсы, или хотя бы тут части кода.
    Сам по себе require уже синхронный, думаю ошибка в другом.
    Пиши я взгляну, можешь в телегу
     
    23 авг 2022 Изменено
    1. RichPerson Автор темы
      Extremum,
      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)
  4. Extremum
    Extremum 23 авг 2022 Не стоит температурить 263 24 июл 2018
    Если тебе нужно экспортировать несколько сущностей то сделай это так:
    JavaScript
    module.exports = {
    server,
    user,
    NewTransition
    }
     
    1. RichPerson Автор темы
      Extremum, [IMG] Я их просто экспортировал отдельно
    2. RichPerson Автор темы
      Extremum, В этом и заключалась вся проблема?
Загрузка...
Top