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

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

目录

  • 错误描述
  • 问题原因
  • 解决方案
    • 解决方案一
    • 解决方案二
  • 问题扩展
    • CJS 和 ESM 的区别?
      • CommonJS (CJS)
      • ECMAScript Modules (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 格式解析和执行模块。

问题扩展

CJS 和 ESM 的区别?

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

CommonJS (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

ECMAScript Modules (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

主要区别

  1. 语法:CJS 使用 requiremodule.exports,而 ESM 使用 importexport
  2. 加载机制:CJS 是同步的,通常用于服务器端。ESM 支持异步加载,适用于浏览器和服务器。
  3. 生态系统兼容性:Node.js 最初只支持 CJS,但现在也支持 ESM。ESM 是现代浏览器支持的标准。
  4. 模块解析: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 🌺

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++核心编程——内存分区、引用、函数提高和函数重载

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…

数仓建设学习路线(一)

前言 数仓建设实践路线是语兴发布在B站的系列课程,搜索语兴呀即可学习完整的数仓建设理论。 大数据相关岗位 大数据常见的岗位主要包括实时开发、数据治理、数据安全、数据资产等。 其中: 实时开发组的主要任务是实时可视化制作(大屏/彩蛋/战报&…

前端结合MQTT实现连接 订阅发送信息等操作 VUE3

MQTT客户端下载 使用测试 在我之前文章中 MQTT下载基础使用 下面记录一下前端使用的话的操作 1.安装 npm i mqtt引入 import * as mqtt from "mqtt/dist/mqtt.min"; //VUE3 import mqtt from mqtt //VUE2 一、MQTT协议中的方法 Connect。等待与服务器建立连接…

Scanner:键盘输入功能的实现、Java程序获取一个随机数

目录 一、 Scanner:键盘输入功能的实现 二、Java程序获取一个随机数 一、 Scanner:键盘输入功能的实现 如何从键盘获取不同类型(基本数据类型、String类型)的变量:使用Scanner类 键盘输入代码的四个步骤&#xff1a…

uView Gap 间隔槽

该组件一般用于内容块之间的用一个灰色块隔开的场景,方便用户风格统一,减少工作量 #平台差异说明 App(vue)App(nvue)H5小程序√√√√ #基本使用 直接引入即可使用 通过height配置高度,单位…

fmt中uint128_fallback的实现分析

数据结构 class uint128_fallback {private:uint64_t lo_, hi_;public:constexpr uint128_fallback(uint64_t hi, uint64_t lo) : lo_(lo), hi_(hi) {}constexpr uint128_fallback(uint64_t value 0) : lo_(value), hi_(0) {}constexpr uint64_t high() const noexcept { ret…

[VUE]2-vue的基本使用

目录 vue基本使用方式 1、vue 组件 2、文本插值 3、属性绑定 4、事件绑定 5、双向绑定 6、条件渲染 7、axios 8、⭐跨域问题 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅…

气膜建筑:舒适、智能、可持续

气膜建筑之所以能够拥有广阔的发展空间,源于其融合了诸多优势特点,使其成为未来建筑领域的前沿趋势。 气膜建筑注重环境可持续性和能源效率。在材料和设计上,它采用可回收材料、提高热保温效果,并积极利用太阳能等可再生能源&…

【洛谷学习自留】p9226 糖果

解题思路: 简单的计算题,用n对k取余,如果余数为0,则输出k的值,否则输出(k-余数)的值。 代码实现: import java.util.Scanner;public class p9226 {public static void main(Strin…

Go、Docker、云原生学习笔记全攻略:从零开始,一步步走向精通!(2024版)

第一章、Go语言学习宝典 一、介绍 01.Go 语言的前生今世 二、开发环境搭建 01.Go 语言开发环境搭建 三、初识GO语言 01.Go 多版本管理工具 02.第一个 Go 程序“hello,world“ 与 main 函数 03.Go 常用命令介绍 04.Go 项目代码布局 05.探索 GO 项目依赖包管…

【2023 CCF 大数据与计算智能大赛】基于TPU平台实现超分辨率重建模型部署 基于QuickRNet的TPU超分模型部署

2023 CCF 大数据与计算智能大赛 《赛题名称》 基于QuickRNet的TPU超分模型部署 巴黎欧莱雅 林松 智能应用业务部算法工程师 中信科移动 中国-北京 gpu163.com 团队简介 巴黎欧莱雅团队包含一个队长和零个队员。 队长林松,研究生学历,2019-202…

【一份老网工珍藏多年的网络配置笔记,很重要!】

01、交换机、路由器的几种配置模式及模式转换 1. 用户模式 登录到交换机(路由器)时会自动进入用户模式,提示符为 switchname>。在该模式下只能够查看相关信息, 对 IOS的运行不产生任何影响。 2. 特权模式 用户模式下&#xff…

精进单元测试技能 —— Pytest断言的艺术!

本篇文章主要是阐述Pytest在断言方面的应用。让大家能够了解和掌握Pytest针对断言设计了多种功能以适应在不同测试场景上使用。 了解断言的基础 在Pytest中,断言是通过 assert 语句来实现的。简单的断言通常用于验证预期值和实际值是否相等,例如&#…

蒙牛×每日互动合作获评中国信通院2023“数据+”行业应用优秀案例

当前在数字营销领域,品牌广告主越来越追求品效协同。针对品牌主更注重营销转化的切实需求,数据智能上市企业每日互动(股票代码:300766)发挥自身数据和技术能力优势,为垂直行业的品牌客户提供专业的数字化营…

实时云渲染的技术原理是什么?一篇文章讲透云渲染

实时云渲染依赖互联网的连接和高性能服务集群,为客户实时提供渲染画面,它有以下几个关键技术: 1、GPU上云 利用云服务器强大的GPU替代本地GPU进行图形处理,提高性能、可替换性和扩展性。2、视频流化技术 这项技术能在远程执行用户…

【ArcGIS微课1000例】0087:经纬度格式转换(度分秒转度、度转度分秒)

ArcGIS软件可以很方便的直接实现度分秒转度、度转度分秒。 文章目录 一、转换预览二、工具介绍三、案例解析一、转换预览 借助ArcGIS快速实现度分秒与度及其他格式的坐标转换。例如:度分秒→度 度分秒: 度: 二、工具介绍 转换坐标记法:将一个或两个字段包含的坐标记法从一…

ElasticSearch删除索引的命令

ElasticSearch删除索引的命令 当前命令操作是在Kibana中操作 删除单个索引 DELETE 索引名称 DELETE test删除多个索引 DELETE 索引名称1,索引名称2 DELETE test1,test2删除全部索引 DELETE /_allDELETE /*删除索引的中的全部数据 POST test/_delete_by_query {&qu…

XREAL推出其新款AR眼镜:XREAL Air 2 Ultra,体量轻内置音效

这款眼镜堪称科技的杰作,它以钛合金为框架,尽显轻盈与精致。配备的双3D环境传感器,宛如双眼般敏锐,能精准捕捉头部运动,让你在虚拟与现实间自由穿梭。120Hz的超高刷新率与500尼特的亮度,让你在4米之外感受1…

搭建React开发环境-webpack实现

周末在家学会React前端知识,记录下来,方便备查。 webpack版本:webpack5 编译器:vscode 第一步、新建项目及初始化 1)新建项目文件夹 可命名为 my_webpack 2)初始化项目 使用命令 npm init -y,…

Centos7 MongoDB安装

基础配置(Centos7.5镜像,2核2GB内存,50GB硬盘) 主机名IPmongodb192.168.100.124 (在MongoDB官网有linux安装MongoDB的步骤) (1)配置yum源 [rootmongodb ~]# cat /etc/yum.repos.d…