为何(await import("node:process")).on的结果为undefined?
问题原因解析
这是因为Node.js中node:process模块的导出机制,在静态导入和动态导入时的访问方式存在差异:
- 静态导入
import process from "node:process"时,process变量直接拿到的是模块的默认导出值——也就是全局的process对象本身,这个对象自带on方法(用于监听进程事件),所以能正常输出预期结果。 - 动态导入
await import("node:process")返回的是一个模块命名空间对象,这个对象本身并不包含on方法,你需要通过它的default属性才能获取到全局process对象。直接访问.on相当于在命名空间对象上查找不存在的属性,自然返回undefined。
正确的动态导入写法应该是:
const processModule = await import("node:process"); console.log(processModule.default.on); // 会输出预期的on方法
简单来说,静态导入的默认导出语法帮你直接取到了模块的默认值,而动态导入需要你手动从返回的模块对象里提取default属性对应的内容。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

