Проблема с установкой циклических зависимостей с использованием require - PullRequest
1 голос
/ 02 июня 2019

Круговые зависимости - это один из способов насмешки дочерних функций внутри родителя в Jest.js. Я видел примеры ES6 о том, как использовать циклический импорт, но у меня возникли проблемы с переводом этого в синтаксис ES5 с использованием require. Вот что у меня есть:

const currentFile = require('./targetFile.js');

const a = () => {
  return currentFile.b();
};

const b = () => {
  return 'from b'
};

module.exports = { a, b }

Затем я пытаюсь запустить приведенный выше код в файле тестера, который требует вышеуказанного в качестве targetFile:

const targetFile = require("../targetFile.js");

test('a and b', () => {
  console.log(targetFile.a(), `=====targetFile.a()=====`);
});


 FAIL  views/admin/__tests__/targetFile.test.js
  ✕ a and b (12ms)

  ● a and b

    TypeError: currentFile.b is not a function

      26 | 
      27 | const a = () => {
    > 28 |   return currentFile.b();
         |                      ^
      29 | };
      30 | 
      31 | const b = () => {

Какой правильный синтаксис для вышеуказанного использования требуется (или другой синтаксис, совместимый с браузером ES5)?

1 Ответ

1 голос
/ 02 июня 2019

По техническим причинам синтаксис module.exports = {} не работает с циклическими зависимостями. К счастью, вы можете использовать синтаксис exports.a = a и использовать его как const target = require('target');.... target.a();

В целом, круговой импорт вызывает больше головной боли, чем пользы, поэтому я предлагаю избегать их. Я также не понимаю, зачем вам нужен циклический импорт для тестирования, и в вашем примере это тоже не показано. Не могли бы вы опубликовать более подробную информацию о ваших файлах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...