require () во время выполнения, но он запускается только один раз.Это нормально? - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть много конфигов в их каталогах, которые отвечают за различные задачи.Но в некоторых случаях мне нужно получить конфигурацию из другого файла.Пример:

Файл1:

module.exports = Object.freeze({
  uid: 'uid',
  name: 'name',
  admin: 'admin',
  balance: 'balance',
  state: 'state',
  bet: 'bet',
  size: 'size',
  chance: 'chance',
  language: 'language'
})

Файл2:

module.exports = Object.freeze({
  url: 'mongodb://localhost:27017/',
  table: 'casino-db',
  row: 'users',
  user: require('/api/user/config')
})

Это нормально?Я слышал, что динамический вызов require() плох, потому что он работает иначе, чем вызов с самого начала файла.

Кто-то использует эту конфигурационную структуру?

Ответы [ 4 ]

0 голосов
/ 23 декабря 2018

зависит от file1 от file2?

, если нет, то почему вы не можете просто ...

// file 1
module.exports = Object.freeze({
  uid: 'uid',
  name: 'name',
  admin: 'admin',
  balance: 'balance',
  state: 'state',
  bet: 'bet',
  size: 'size',
  chance: 'chance',
  language: 'language'
})

// file2
module.exports = Object.freeze({
  url: 'mongodb://localhost:27017/',
  table: 'casino-db',
  row: 'users'
})

// some index.js
module.exports = {
  file1: require('./file1'),
  file2: require('./file2')
}
0 голосов
/ 23 декабря 2018

Просто используйте dotenv .Будет проще:))

0 голосов
/ 23 декабря 2018

Нет ничего плохого в динамическом вызове require().Согласно документации все требования кэшируются.

0 голосов
/ 23 декабря 2018

последующие вызовы требуют кэшироваться в объекте require.cache.То, что вы делаете, хорошо, потому что вы экспортируете только объект.Так что он не пересчитывается после многих требований.

Если вы беспокоитесь об этом, вы можете просто сделать это:

const user = require('/api/user/config')
module.exports = Object.freeze({
  url: 'mongodb://localhost:27017/',
  table: 'casino-db',
  row: 'users',
  user
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...