当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/183553.html

相关文章:

  • STM32 10个工程篇:1.IAP远程升级(六)
  • 【智能家居项目】裸机版本——字体子系统 | 显示子系统
  • PDF中跳转到参考文献后,如何回到原文
  • 了解基于Elasticsearch 的站内搜索,及其替代方案
  • 【多模态融合】TransFusion学习笔记(2)
  • Pyhon-每日一练(1)
  • MySQL:数据库的物理备份和恢复-冷备份(3)
  • 功能比较:Redisson vs Jedis
  • Spring web security
  • SpringCloud(二)Docker、Spring AMQP、ElasticSearch
  • 7.Tensors For Beginneers - Convector Components
  • 直线导轨坏了可以维修吗?
  • Java基础--泛型详解
  • 学习搜狗的workflow,MacBook上如何编译
  • Ubuntu使用cmake和vscode开发自己的项目,引用自己的头文件和openCV
  • 2) dataset, dataloader
  • 阿里云PolarDB自研数据库详细介绍_兼容MySQL、PostgreSQL和Oracle语法
  • [软件工具]opencv-svm快速训练助手教程解决opencv C++ SVM模型训练与分类实现任务支持C# python调用
  • 邮件注册(一)验证码发送
  • 【网络安全---sql注入(2)】如何通过SQL注入getshell?如何通过SQL注入读取文件或者数据库数据?一篇文章告诉你过程和原理。
  • 正点原子嵌入式linux驱动开发——TF-A移植
  • GB28181学习(六)——实时视音频点播(数据传输部分)
  • JMeter接口自动化测试(数据驱动)
  • 数据结构:二叉树(超详解析)
  • 【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 4. 对坐标的曲面积分(第二类曲面积分)与场论初步
  • 使用Thrift实现跨语言RPC调用
  • 【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】
  • leetcode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
  • Error string: Could not load library
  • pom.xml里的标签