Загрузка...

How to make a synchronous require request?

Thread in Node.js created by RichPerson Aug 23, 2022. 191 view

  1. RichPerson
    RichPerson Topic starter Aug 23, 2022 Разработка - https://zelenka.guru/threads/4480553/ 2160 Sep 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. View previous comments (4)
    2. RichPerson Topic starter
      Gumus, https://stackoverflow.com/questions/38296667/getting-unexpected-token-export
      Я вроде как нашел суть проблемы и ее решение

      Если вы используете NodeJS v14.13.0 или новее (который поддерживает ESM), вы можете включить его, установив "type":"module"в вашем проекте package.json

      Остался один момент, куда именно прописывать "type":"module".

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