首页 > 解决方案 > 执行代码后的节点导入模块(或 ESM 动态导入)

问题描述

我正在用 nodejs 和 express 编写一些代码,我需要在继续导入模块之前执行一些代码。我的整个应用程序已设置并使用带有 import 而不是 require 的模块,我无法更改此设置。

为了让一些 npm 包工作,我必须在继续导入模块之前运行它们。使用 commonJS 和 require () 效果很好,但使用 import 我不能。

即使我颠倒了模块的顺序,或者如果我在不同的文件中调用它们,它们都是首先加载的,然后才执行我的代码。

示例 start.js

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

第二个.js

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

在我所有的测试中,我的代码只会在导入“second.js”及其所有相关导入之后执行。

任何想法?

标签: javascriptnode.jsnode-modules

解决方案


我找到了使用动态导入的解决方案:

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


推荐阅读