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

ESM调用commonjs模块

桥接文件

/server/server-bridge.mjs

javascript 复制代码
// 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

javascript 复制代码
const server = {start:()=>console.log("启动server")}
module.exports = server

esm中使用cjs模块

javascript 复制代码
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

javascript 复制代码
export default {
  name: '这是esm模块'
}

common.js

javascript 复制代码
import('../esm.js').then((m) => {
  console.log(m.default)
})
相关推荐
用户69371750013841 小时前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦1 小时前
Web 前端搜索文字高亮实现方法汇总
前端
用户69371750013841 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
似水明俊德3 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
漫随流水3 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
Thera7773 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
踩着两条虫4 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
炘爚4 小时前
C语言(文件操作)
c语言·开发语言
阿蒙Amon4 小时前
C#常用类库-详解SerialPort
开发语言·c#
凸头4 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言