NodeJS — порядок импорта

#javascript #node.js #import

#javascript #node.js #импорт

Вопрос:

Я не понимаю, как nodejs разрешает операторы импорта. Я постоянно получаю ошибку «Невозможно импортировать до инициализации».

Например, у меня есть модуль инициализации, который экспортирует асинхронную функцию и пару констант, которые она создает.

 import init, { DATA_VALIDATION_POOL, QUEUE_POOL, IS_REPLAY_POOL } from './init.js';
  

а затем app.js ожидает запуска функции инициализации. init.js сам по себе также имеет импорт, и некоторые из них разрешаются, а некоторые терпят неудачу. Я не понимаю, почему некоторые терпят неудачу, а некоторые импортируются должным образом.

В этом примере все, что касается импорта из ./utils/pool.js , работает нормально, но по какой-либо причине не удается импортировать содержимое ./utils/dash.js .

./utils/dash.js ничего не импортирует из ../init.js

init.js

 ...
// CREATE POOLS
...
export const QUEUE_POOL = createPool('QUEUE_POOL');

// EMOJI INTERACTIONS
...
registerEmojiInteraction(QUEUE_POOL, {
  ...
  onAdd: goToPrevPage,
});

const init = async () => {
  ...
  await createCoaches(allCoachIds);
};

import { rankEmojis, raceEmojis, vsRaceEmojis } from './Emojis.js';
import { registerEmojiInteraction, onAddHelper } from './utils/emojiInteraction.js';
import { createPool } from './utils/pool.js';
import {
  finishedCoachingStudent,
  goToPrevPage,
  selectStudent,
  goToNextPage,
} from './utils/dash.js';
import { createCoaches } from './utils/coach.js';

export default init;

  

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

1. @etarhan все utility/<filename>.js модули — это просто наборы функций, они никогда не вызывают и не определяют никаких констант, кроме функций. Иначе говоря, ничего, кроме export const <functionName> = () => {} для всего файла.

2. операторы импорта @etarhan подняты