我有一个后端CJS应用程序&前端ESM应用程序。以及我在ESM中创建的一个节点模块。节点模块适用于我的ESM应用程序,因为它们都使用ESMimport
语法。尝试在CJS应用程序中使用它显然会引发错误,因为它无法读取ESMimport
语法。
我尝试使用Rollup.js
将ESM
代码转换为CJS
,并在package.json
文件中使用conditional exports
,但这不起作用。
假设它是一个类似的库
my-library.js
// No require on top. They will be local to their use.
const myLibrary = ...
// export default instead of module.exports
export default myLibrary
库必须首先将其扩展名重命名为.mjs("my library.js"="my library.msj"(
然后,
在CJS(Node.js(中=>
动态导入:
const {default: myUtilityLib } = await import("./my-library.mjs");
在ESM(浏览器(中=>
正常标准进口:
import myUtilityLib from "./my-library.mjs"