Модули импорта узлов после выполнения кода (или динамический импорт ESM)

#javascript #node.js #node-modules

#javascript #node.js #узлы-модули

Вопрос:

я пишу некоторый код в nodejs и express, мне нужно выполнить некоторый код, ПРЕЖДЕ чем продолжить импорт модулей. Все мое приложение настроено и использует модули с импортом вместо require, и я не могу изменить этот параметр.

Чтобы заставить некоторые пакеты npm работать, я должен запустить их, ПРЕЖДЕ чем продолжить импорт модулей. Использование CommonJS и require () работает отлично, но с импортом я не могу.

Даже если я изменяю порядок модулей или вызываю их в разных файлах, все они загружаются ПЕРВЫМИ, и только после этого выполняется мой код.

Пример start.js

 import { mustBeLoadedAfterCode } from './second.js';
// some code here I need to execute first
 

second.js

 import { mustBeLoadedAtTheEnd } from './third.js';
// some code here to execute at the end
 

Во всех моих тестах мой код будет выполняться только ПОСЛЕ импорта ‘second.js «и все это относительный импорт.

Есть идеи?

Ответ №1:

Я нашел решение с использованием динамического импорта:

 let module = await import('./module.js');
 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports

https://v8.dev/features/dynamic-import