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

用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 同理。

相关推荐
Cosmoshhhyyy6 小时前
Node.js 18+安装及Claude国内镜像使用、idea中claude插件下载指南
node.js
徐_三岁11 小时前
关于npm的钩子函数
前端·npm·node.js
不买Huracan不改名14 小时前
安装Codex(需要用npm)
前端·npm·node.js
光影少年15 小时前
webpack和vite优化方案都有哪些
前端·webpack·node.js
kk不中嘞15 小时前
Webpack 核心原理剖析
前端·webpack·node.js
Yvonne爱编码15 小时前
简述ajax、node.js、webpack、git
前端·git·ajax·webpack·node.js·visual studio
摘星编程17 小时前
ChatGPT 协作排查:Node.js 内存泄漏的定位与修复
chatgpt·性能优化·node.js·ai辅助调试·chatgpt协作
前端双越老师18 小时前
前端开发 AI Agent 智能体,需要掌握哪些知识?
前端·node.js·agent
EndingCoder18 小时前
Electron 安全性最佳实践:防范常见漏洞
前端·javascript·electron·前端框架·node.js·桌面端
醉方休1 天前
npm/pnpm软链接的优点和使用场景
前端·npm·node.js