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)
})
相关推荐
Full Stack Developme7 小时前
Apache Tika 教程
java·开发语言·python·apache
luj_17687 小时前
FreeDOS vs MS-DOS PC-DOS 对比解析
服务器·c语言·开发语言·经验分享·算法
杨先生哦7 小时前
2026 热端攻防:AI 驱动 Web 前端安全全景透析
前端·笔记·安全·web安全
桀人7 小时前
C++——string类的详细介绍
开发语言·c++
李白的天不白7 小时前
SmartAdmin(基于 Spring Boot 框架)中配置跨域请求 VUE3 设置请求头
java·前端
橙子进阶之路7 小时前
Java线程(CompletableFuture)
java·开发语言
一个被程序员耽误的厨师7 小时前
01-设计篇-我用前端那一套手艺造了一个AI-Native工具
前端·ai-native
2601_961875247 小时前
法考备考计划表|学习计划|资料已整理
java·开发语言·学习·eclipse·tomcat·c#·hibernate
青春:一叶知秋7 小时前
【Python】python基本语法和使用
开发语言·python
不吃糖葫芦37 小时前
vue3实现拓扑图编辑功能(谨以此纪念我当前的最后一份前端工作)
前端