【问题标题】:How can i dynamically import a node module (and its dependencies) given the module name?如何在给定模块名称的情况下动态导入节点模块(及其依赖项)?
【发布时间】:2022-12-07 18:12:52
【问题描述】:

我想在 NodeJS 中构建一个函数,它接受一个模块名称作为输入参数,并导入该模块及其依赖项。理想情况下,可能是这样的:

async function loadModule (moduleName) {
   await import(moduleName)
}

const test = await loadModule('./test.js')

test.js 会是这样的

import a from 'a'
import b from 'b'

// do something

是否可以在运行时动态导入文件及其依赖项ab

【问题讨论】:

    标签: node.js dynamic import


    【解决方案1】:

    在 Node.js 中使用 import 关键字无法在运行时动态导入模块及其依赖项,因为 import 关键字是 ECMAScript (JavaScript) 语言规范的一部分,在 Node.js 中不受支持.

    但是,您可以使用 require 函数实现类似的功能,它是 Node.js 核心 API 的一部分。 require 函数允许您在运行时导入模块,但它不支持导入模块的依赖项。

    async function loadModule(moduleName) {
      return await require(moduleName);
    }
    
    const test = await loadModule('./test.js');
    

    test.js看起来像这样

    // test.js
    
    const a = require('a');
    const b = require('b');
    

    require函数是同步的,所以不需要使用await。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-08
      • 2022-11-30
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2021-10-04
      相关资源
      最近更新 更多