javascript - 执行代码后的节点导入模块(或 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”及其所有相关导入之后执行。
任何想法?
解决方案
我找到了使用动态导入的解决方案:
let module = await import('./module.js');
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports
推荐阅读
- eclipse - org.openqa.selenium.chrome.ChromeDriver 类型不可访问
- .net - Powershell System.IO.StreamReader 读取方法
- r - 使用因子和数字预测器执行套索正则化?
- python - Keras训练后的top k准确率
- gsutil - gsutil 文件下载 OSError:权限被拒绝。千字节
- c - C - Pointer Arithmetic 使用的机器码测试器骨架
- java - 地图列表的不同json格式
- floating-point - 如何以最大精度将 5 个浮点数平均编码为 4 个浮点数
- c# - 使用用户定义类型从 .net 调用 oracle 存储过程时出现问题
- python - Python 密码检查程序 - 与 .pop() 值的比较不起作用