解决报错: 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 同理。

相关推荐
Java_ESS16 分钟前
MacBook Pro Intel 芯片版:Node.js + Claude Code + OpenCode 完全安装指南
node.js·ai编程
小贺要学前端34 分钟前
ES6 还没用明白,JavaScript 已经快到 ES2026 了
前端·javascript·es6
En^_^Joy5 小时前
Node.js开发指南:模块、npm与Webpack
webpack·npm·node.js
郭庆汝7 小时前
Ubuntu安装Node.js
linux·ubuntu·node.js
wellc7 小时前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
不会写DN8 小时前
从依赖到自主:手写一个 ICO 文件转换器
前端·javascript·typescript·node.js
zybsjn9 小时前
一天快速实现markdown 编辑器和排版工具:基于Node.js + Express + 原生JS的开发实践
node.js·express·ai编程
书中枫叶9 小时前
个人主页网站SEO | 个人博客基于Nuxt
typescript·node.js·nuxt.js
木易 士心9 小时前
Node.js 后端开发全解析:从核心原理架构到实战应用
后端·架构·node.js
H5css�海秀17 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php