尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

esm模块与commonjs模块相互调用的方法

esm模块与commonjs模块相互调用的方法
📅 发布时间:2026/7/14 7:55:47

ESM调用commonjs模块

最简单的方法1:

import { createRequire } from "module"; export default require("./cjs.cjs"); function require(name) { return createRequire(import.meta.url)(name) }

最简单的方法2:

export default await require("./cjs.cjs"); // 导出为 ESM async function require(name) { // return createRequire(import.meta.url)(name) return new Promise((resolve, reject) => { import("url").then(({ fileURLToPath }) => { import("module").then(({ createRequire }) => { resolve(createRequire(fileURLToPath(import.meta.url))(name)) }) }) }) }

桥接文件

/server/server-bridge.mjs

// server/server-bridge.mjs import { createRequire } from 'module' import { fileURLToPath } from 'url' import path from 'path' // 创建一个 require 函数,用于加载 CJS 模块 const require = createRequire(import.meta.url) const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) // 安全加载原始 CJS 模块 const serverCJS = require('./server.notebook.node.js') // 导出为 ESM export const start = serverCJS.start || serverCJS.default?.start || (() => {}) export default serverCJS

commonjs模块

/server/server.notebook.node.js

const server = {start:()=>console.log("启动server")} module.exports = server

esm中使用cjs模块

import os from 'os' import fs from 'fs' import path from 'path' import { start as startServer } from './server/server-bridge.mjs' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const serverPort = 3002 startServer(serverPort)

commonjs调用esm模块

esm.js

export default { name: '这是esm模块' }

common.js

import('../esm.js').then((m) => { console.log(m.default) })

相关新闻

  • 28天免费掌握GDScript编程:从零到游戏开发实战指南
  • 2026年实测:免费的PDF转Word哪个好用 亲测避坑指南 - 图片处理研究员
  • OnscripterYuri WebAssembly优化技巧:提升浏览器游戏性能的10个方法

最新新闻

  • PVC 塑胶地板橡胶地板行业剖析|西安本地服务商综合实力盘点 - 国麟测评
  • 2026年消防设施检测公司:行业三大核心趋势解读 - 资讯快报
  • 不懂别乱卖!苏州黄金回收计价逻辑拆解,看懂大盘价再变现 - 奢侈品回收评测
  • 海信预热可拆卸 LCD 屏电子纸手机,或成减少刷视频新办法
  • 2026年7月最新济南雷达官方售后联系电话与客户服务中心网点地址 - 亨得利钟表维修中心
  • ZeroTermux:Android设备上的终极Linux终端环境解决方案

日新闻

  • AWS SSM安全运维实践:零公网暴露的合规远程开发方案
  • Tableau 2024.1 图表选择指南:5种业务场景与最佳图表类型匹配
  • dsPIC33FJ与CMT-8540S-SMT在嵌入式音频处理中的高效应用

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号