解决报错: require is not defined in ES module scope

文章讲述了在Node.js环境下,由于mjs文件被识别为ES模块,而Node默认为CommonJS格式,导致require()函数未定义。解决方法是将文件后缀更改为.cjs以使用CommonJS模块。文章还解释了CommonJS和ES模块在加载机制上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用node启动mjs文件报错:require is not defined in ES module scope

现象如下:

 原因: 文件后缀是mjs, 被识别为es模块,但是node默认是commonjs格式,不支持也不能识别es模块。

解决办法:把文件后缀从.mjs改成 ==》.cjs后缀

补充资料:

1. 什么是 .cjs 和 .mjs ?

  1. .cjs 代表使用 CommonJS 模块
  2. .mjs 代表使用 ES 模块

2. 那为什么要这么麻烦分出两种模块呢? 直接 .js 不行吗?

首先我们来了解一下两种模块的区别:

  1. CommonJS 模块的 require() 是同步加载的,而我们的 ES 模块的 import() 是异步加载的
  2. require() 不能加载 ES 模块,import 可以加载 CommonJs 模块,但是不能用大括号解构,只能作为整体导入,用点来取属性

当你用 .cjs 后缀的时候,那么就代表使用 CommonJs 模块规范,不能使用 ES 模块的 import 命令,.mjs 同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值