node.js добавление нового поля экспорта без торможения существующих требований

#node.js

#node.js

Вопрос:

Рассмотрим следующий простой сценарий, файл config.js:

 const config = {
  a: '123'
}

module.exports = config;
 

и это использование:

 const cfg = require('./conifg');
console.log(cfg.a);
 

Теперь мне нужно добавить дополнительный элемент экспорта в config.js:

 const config = {
  a: '123'
}

function someFunction() {
  console.log('blah');
}

module.exports = {
  config,
  someFunction
};
 

Эта модификация тормозит пока рабочий код, потому cfg.a что в

 const cfg = require('./conifg');
console.log(cfg.a);
 

указывает теперь на undefined .

Есть ли какой-либо способ расширить module.exports , оставаясь при этом экспортируемым элементом «по умолчанию», чтобы не тормозить работу?

Ответ №1:

вы можете экспортировать все свойства конфигурации отдельно

 module.exports = {
  ...config,
  someFunction
};
 

или, если вы не хотите использовать распространение, вы можете получить доступ с помощью

 const cfg = require('./conifg');
console.log(cfg.config.a);
 

Ответ №2:

Вы можете сделать это следующим образом

 const config = {
  a: '123',
  someFunction: someFunction
}

function someFunction() {
  console.log('blah');
}

module.exports = config;
 

Комментарии:

1. К сожалению, семантически это было бы ужасно, конфигурация — это огромный JSON с текстами в основном, когда функция out of sudden занимает одно из полей… но, эй, спасибо за помощь 🙂