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)
})
相关推荐
贾伟康17 分钟前
【共创稿事节】一个 UserDataManager 管八类数据:Preferences 持久化的克制用法
java·服务器·前端·harmonyos·arkts·鸿蒙
迪康Defender23 分钟前
PHP 高危漏洞应急分析:从风险原理到端点侧纵深防护
运维·开发语言·安全·自动化·php·运维开发·远程工作
卓豪终端管理25 分钟前
【无标题】
java·服务器·前端
修炼的dance30 分钟前
一条命令查清 WebM 有没有透明通道,默认解码会骗你
前端
2601_9669496530 分钟前
为什么不应该把 QuantDash API Key 直接写进公开代码仓库?从 Git 提交历史理解凭证泄露风险
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
智_永无止境31 分钟前
又找到一个纯Java的OCR项目,识别的格式还挺多
java·开发语言·ocr
小灰灰搞电子33 分钟前
Rust+Slint 实现动态流光边框源码分享
开发语言·前端·rust·流光边框
niucloud-admin39 分钟前
NIUCLOUD PHP SAAS上门家政使用文档:机构报表
前端·人工智能
包小黑1 小时前
Python 转 EXE (实用工具)
开发语言·python
枣把儿1 小时前
开源!全套公众号写作、封面、发布自动化工具包!
前端·命令行