升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated.

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot
🌺 仓库主页: Gitee 💫 Github 💫 GitCode
💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正!

目录

  • 错误描述
  • 问题原因
  • 解决方案
    • 解决方案一
    • 解决方案二
  • 问题扩展
    • 什么是 CJS?
    • 什么是 ESM?
    • CJS 和 ESM 的区别
    • Vite 为什么弃用 CJS?
  • 开源项目

错误描述

vue3-element-admin 升级 Vite4 至 Vite5 后启动项目出现如下警告:

The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.

问题原因

Vite 官方弃用 CJS 说明: deprecate-cjs-node-api

解决方案

Vite 官方 Github 仓库下的 ISSUE:“The CJS build of Vite’s Node API is deprecated” when using a TS vite.config.ts and the package.json has no type

根据官方说明文档和 ISSUE 下的解决方案有两种:

解决方案一

package.json 添加 "type": "module"

默认情况下 Node.js 默认将 .js 文件作为 CommonJS (CJS) 模块来处理。
当将 “type”: “module” 添加到 package.json 中,Node.js 会将 .js 文件作为 ECMAScript Modules (ESM) 来处理。

解决方案二

将 vite.config.ts 文件改名为 vite.config.mts

文件扩展名 .mts 明确地指示 Node.js 将该文件作为一个 ECMAScript Module (ESM) 来处理。
这与在 package.json 中设置 “type”: “module” 相类似,都是为了确保 Node.js 以 ESM 格式解析和执行模块。

问题扩展

CommonJS (CJS) 和 ECMAScript Modules (ESM) 是两种不同的 JavaScript 模块化标准,它们在语法和功能上有一些关键区别。。

什么是 CJS?

  • 主要用途:最初设计用于 Node.js。
  • 导出模块:使用 module.exportsexports
  • 导入模块:使用 require() 函数。
  • 加载方式:同步加载,适合服务端。

示例

// CJS 导出
// math.js
function add(a, b) {
    return a + b;
}
module.exports = { add };

// CJS 导入
// main.js
const math = require('./math.js');
console.log(math.add(2, 3));  // 输出 5

什么是 ESM?

  • 主要用途:作为 JavaScript 的官方标准,用于浏览器和现代 Node.js。
  • 导出模块:使用 export 关键字。
  • 导入模块:使用 import 语句。
  • 加载方式:可以是异步的,适合服务端和客户端。

示例

// ESM 导出
// math.js
export function add(a, b) {
    return a + b;
}

// ESM 导入
// main.js
import { add } from './math.js';
console.log(add(2, 3));  // 输出 5

CJS 和 ESM 的区别

  • 语法:CJS 使用 requiremodule.exports,而 ESM 使用 importexport
  • 加载机制:CJS 是同步的,通常用于服务器端。ESM 支持异步加载,适用于浏览器和服务器。
  • 生态系统兼容性:Node.js 最初只支持 CJS,但现在也支持 ESM。ESM 是现代浏览器支持的标准。
  • 模块解析:CJS 模块解析时可以省略文件扩展名和目录索引文件,而 ESM 则更严格,通常需要完整的路径和文件扩展名。

随着 JavaScript 生态系统的发展,ESM 正在逐渐成为主流,特别是在前端开发中,由于其支持异步和静态分析的优势。

Vite 为什么弃用 CJS?

Vite 作为一个现代前端构建工具,越来越多地依赖于 ESM 特性,例如更好的静态分析和模块化能力。随着 Vite 的更新,对 CJS 支持逐渐减少,因此旧的 CJS 模块可能不再兼容。

开源项目

  • SpringCloud + Vue3 微服务商城
GithubGitee
后端youlai-mall 🍃youlai-mall 🍃
前端mall-admin🌺mall-admin 🌺
移动端mall-app 🍌mall-app 🍌
  • SpringBoot 3+ Vue3 单体权限管理系统
GithubGitee
后端youlai-boot 🍃youlai-boot 🍃
前端vue3-element-admin 🌺vue3-element-admin 🌺

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/303728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DOM高级

1.1 自定义属性操作 1.1.1 获取属性值 element.属性 element.getAttribute(属性) 区别: element.属性:获取元素内置属性 element.getAttribute(属性):获取自定义的属性 1.1.2 设置属性值 element.属性 值 element.setAttribute(属性&a…

多特征变量序列预测(一)——CNN-LSTM风速预测模型

目录 往期精彩内容: 前言 1 多特征变量数据集制作与预处理 1.1 导入数据 1.2 数据集制作与预处理 2 基于Pytorch的CNN-LSTM 预测模型 2.1 定义CNN-LSTM预测模型 2.2 设置参数,训练模型 3 模型评估与可视化 3.1 结果可视化 3.2 模型评估 代码…

11.文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识,但是这里我们并不浪费笔墨介绍这个概念,请大…

柯桥小语种学习,留学韩语 生活日常口语 语法

① N이다/A/V/았ㄹ/을지도 모르다 说不定 이미 도착했을 지도 모르니까 전화해 봐요 说不定已经到了,打电话试试 주말에 세일이 있을지도 모르니까 주말에 가 보자 周末说不定会搞活动,我们周末去吧 ② ㄴ/은/는/았었는/ㄹ/을지 모르다 不知道 처음이…

第四站:C/C++基础-指针

目录 为什么使用指针 函数的值传递,无法通过调用函数,来修改函数的实参 被调用函数需要提供更多的“返回值”给调用函数 减少值传递时带来的额外开销,提高代码执行效率 使用指针前: 使用指针后: 指针的定义: 指针的含义(进阶): 空指针…

4.6 BOUNDARY CHECKS

我们现在扩展了tile矩阵乘法内核,以处理具有任意宽度的矩阵。扩展必须允许内核正确处理宽度不是tile宽度倍数的矩阵。通过更改图4.14中的示例至33 M、N和P矩阵,图4.18创建了矩阵的宽度为3,不是tile宽度(2)的倍数。图4.…

怎么将营业执照图片转为excel表格?(批量合并识别技巧)

一、为何要将营业执照转为excel表格? 1、方便管理:将营业执照转为excel格式,可以方便地进行管理和整理,快速查找需要的信息。 2、数据处理:Excel可以提供丰富的计算和数据分析功能,转化为excel后方便数据…

【算法设计与分析】网络流

目录 max-flow 和 min-cut流网络 Flow network最小割 Min-cut最大流 Max-flow Greedy algorithmFord–Fulkerson algorithm剩余网络 Residual networkFord–Fulkerson algorithm算法流程 最大流最小割理论 max-flow min-cut theorem容量扩展算法 capacity-scaling algorithm时间…

Rustdesk本地配置文件存在什么地方?

环境: rustdesk1.1.9 Win10 专业版 问题描述: Rustdesk本地配置文件存在什么地方? 解决方案: RustDesk 是一款功能齐全的远程桌面应用。 支持 Windows、macOS、Linux、iOS、Android、Web 等多个平台。 支持 VP8 / VP9 / AV1 …

UDP 和 TCP 、HTTP、HTTPS、SOCKS5协议的不同之处及应用场景

UDP 和 TCP、HTTP、HTTPS、SOCKS5 协议的不同之处及应用场景: UDP (User Datagram Protocol): 不同之处:UDP 是无连接的,不保证数据包的顺序到达或完整性,也没有流量控制和拥塞控制机制。它尽可能快地将数据包从源主机…

STL标准库与泛型编程(侯捷)笔记4

STL标准库与泛型编程(侯捷) 本文是学习笔记,仅供个人学习使用。如有侵权,请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

面向应用的离线计算系统:周期任务组合策略

1 场景 业务应用系统想大批量利用数据中心的计算能力跑数,回传结果。比如一个个地区的详情数据。而大数据平台通常是调度平台系统,和业务系统是两个独立的平台系统,如何建立交互方式。 业务有个性化的实验策略,需要组合业务条件达到实验效果。比如捞取不同的数据实验算法…

4.8 SUMMARY 4.9 EXERCISES

总之,在现代处理器中,程序的执行速度可能会受到内存速度的严重限制。为了很好地利用CUDA设备的执行吞吐量,应该在内核代码中获得高计算与全局内存访问率。如果获得的比率很低,则内核受内存约束;即其执行速度受从内存访…

鸿蒙Ability开发-Stage模型下Ability的创建和使用

创建Ability和Page页面 创建两个Ability:EntryAbility,DetailsAbility,其中EntryAbility是由工程默认创建的,这里我们只讲如何创建DetailsAbility。 使用DevEco Studio,选中对应的模块,单击鼠标右键&…

IDEA+Git——项目分支管理

IDEAGit——项目分支管理 1. 前言2. 基础知识点2.1. 分支区分2.2. Git 代码提交规范2.3. 四个工作区域2.4. 文件的四种状态2.5. 常用命令2.6 注重点 3. IDEA分支管理 1. 前言 在Git中,分支是项目的不同版本,当开始开发一个新项目时,主分支通常…

关于外连接、内连接和子查询的使用(2)

目录 一. 前言 二. 使用外连接、内连接和子查询进行解答 三. 思维导图 一. 前言 在前面我们对外连接、内连接和子查询的使用有了一些了解,今天我们将继续更深入的进行学习。(这里缺少的八个题目在博主的前面博客有解答,大家可以移步前面一…

Tsmaster使用笔记整理

选择厂商 根据你所选择的CAN分析仪的厂商,确定你的厂商设备设置。 我一般会选择PEAK,和 ZLG多一点,其他的没有用过。除了上图中的,市面上的CAN分析仪还有CANanlyst、广成科技、创芯科技等,但它们都不能在Tsmaster上使…

Android Matrix (二)具体图形变换参数的获取

Android Matrix (二)具体图形变换参数的获取 Matrix 类在 Android 中用于表示 3x3 的变换矩阵。这个矩阵可以应用于画布(Canvas),视图(View)或者位图(Bitmap)&#xff0…

嵌入式Linux-Qt环境搭建

本编介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试。 1 tslib编译 tslib之前在测试触摸屏的时候使用过,这里再来记录一下编译过程。 下载tslib库的源码:https://github.com/libts/tslib/tags 将下载的源码拷贝到ubun…

在当前bash(sh)中执行脚本和注册函数

在研究《管理Python虚拟环境的脚本》时,我们使用了source指令而没有使用sh或者bash来执行脚本,就是因为source指令可以让脚本在当前bash(sh)中执行;而sh或者bash则会新启动一个bash来执行。 我们可以通过下面这个脚本做测试 # test.sh # 用…