Node.js中能否使用ESM导入语法直接引入CommonJS模块?
Node.js中能否使用ESM导入语法直接引入CommonJS模块?
当然可以!现在Node.js已经原生支持在ESM模块环境里直接用import语法引入CommonJS模块了,完全不需要额外的转译工具就能搞定~
举个例子,假设你有一个CommonJS模块commonjsmodule,它的导出代码是这样的:
exports.add = function() { /* 你的函数逻辑 */ }
只要你的项目处于ESM环境中(比如package.json里配置了"type": "module",或者你的导入文件后缀是.mjs),就可以直接用ESM的解构导入语法引入它:
import { add } from "commonjsmodule";
除此之外,你也可以用默认导入的方式,把整个CommonJS模块的导出对象拿过来:
import commonjsModule from "commonjsmodule"; // 此时 commonjsModule.add 就是你要的方法
你提到的视频里演示的package.json中的type字段,就是用来设置项目默认模块系统的关键配置:
- 当
type设为"module"时,项目里的.js文件会被默认当作ESM模块处理 - 如果不设置
type或者设为"commonjs",.js文件默认是CommonJS模块,但.mjs文件依然会被识别为ESM
所以视频里能在ESM的app文件中同时导入CommonJS和ESM模块,完全是Node.js原生支持的模块互操作能力,不需要额外工具加持——这也是Node.js在模块系统兼容上做的优化,让两种模块系统能平滑协作。
备注:内容来源于stack exchange,提问作者Ole
相关产品推荐
相关产品推荐

