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)
})