[随笔] 升级uniapp旧项目的vue、pinia、vite、dcloudio依赖包等

news2025/5/6 0:56:45

汇总

# 升级uniapp项目dcloudio整体依赖,建议执行多次
# 会顺带自动更新/升级vue的版本
npx @dcloudio/uvm@latest alpha

# 检查 pinia 的最新版本
npm view pinia version

# 更新项目 pinia 到最新版本
npm update pinia

# 更新项目 pinia 到特定的版本
# 首先,修改项目packages.json里面对应依赖的版本,
# 然后运行:
npm install

前提

node -v 以前是v14.21.3 现在是v22.14.0
旧项目版本

"@dcloudio/uni-app": "^3.0.0-alpha-3050520220824001"

"vue": "^3.2.37"

"vite": "^2.9.14"
"pinia": "^2.0.20"

升级前的报错

1)HBuilderX预览项目后,无报错,白屏,显示运行地址
> Local: http://localhost:3000/xxx
将http://localhost:3000/xxx运行在右边的Web浏览器中,运行,开始报错(下一个报错...)

2)报错 vite.createFilter is not a function

原因:vite版本与安装的依赖版本不匹配,升级vue版本或者降低vite版本
解决:vite.createFilter is not a function 问题解决-CSDN博客
(我们在执行“npx @dcloudio/uvm@latest alpha”之后就解决了)

升级后的报错

3)升级vite到v5后,
报错:Uncaught TypeError: (intermediate value).globEager is not a function,
出处:const modules = import.meta.globEager('./modules/**/*.ts')
解决办法:vite3、4升级vite5后 import.meta.globEager方法不存在及ts异常问题解决 
解决办法:https://blog.csdn.net/tekin_cn/article/details/144070214

4)报错vue.runtime.esm.js? [sm]:1480 Error: [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"?

 ...关键词!before calling "app.use(pinia)" > 要么没call,要么晚call...

报错:

解决办法:

1.先看看各种store有没有正确的定义? 
import { defineStore } from 'pinia'
export const useUserStore = defineStore({})

2.再看看各种store有没有正确的引用 + useXXStore()实例化?
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()

3.确实没问题,按照pinia官方手册,完整对比下官网的所有步骤!(当前pinia版本)
手册:https://pinia.vuejs.org/zh/getting-started.html
发现问题:main.js [main.ts] 未正确引入pinia。 >> 问题解决

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'

const pinia = createPinia()
const app = createApp(App)

app.use(pinia)
app.mount('#app')


 

5)报错:$u未定义...
分析:$u是uviewUI (或者vk-uview-ui)的内置函数组合,挂载到uni全局对象中。
原因:uview未挂载成功,官网方法:https://uviewui.com/components/install.html ,
但本项目使用\src\plugins\index.ts统一挂载,另有pinia、vconsole等。

其中,浅谈import.meta.glob和import.meta.globEager的区别 
既然isFunction通不过,那就,直接run! (...难不成isObject??)

import { App } from 'vue'
const modules = import.meta.glob('./modules/**/*.ts', {
	eager: true, import: 'default'
})

export default {
    install: (app: App) => {
        for (const module of Object.values(modules)) {
			module(app)
        }
    }
}

ojbk!
 

6)...

More

NPX

NPM 是一个 Node 包管理器,NPX 是一个 Node 包执行器。Node 的执行也可以 NPM 来完成,但是必须进行本地安装,通过定位本地路径或者配置 scripts 来能执行。NPX 则通过一个简单命令大大简化了包运行的成本,既可以运行本地包,也可以远程包,无需安装包也可以执行该包,这就有效避免了本地磁盘污染的问题,节省了本地磁盘空间。

https://juejin.cn/post/7189924390274859066

更新依赖到指定版本

可以使用 @dcloudio/uvm 管理编译器的版本,此工具仅自动增加或更新 uni-app 编译器主要依赖,对于新增的编译命令(scripts)暂时不会自动处理,需手动参考新工程进行配置。

https://uniapp.dcloud.net.cn/quickstart-cli.html#cliversion

uniapp版本管理器

uvm = uni-app version manager

https://www.npmjs.com/package/@dcloudio/uvm

ending...

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

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

相关文章

第十六届蓝桥杯 2025 C/C++组 密密摆放

目录 题目: 题目描述: 题目链接: 思路: 思路详解: 发个牢骚: 代码: 代码详解: 题目: 题目描述: 题目链接: P12337 [蓝桥杯 2025 省 AB/Python B 第二…

【QT】QT中的网络编程(TCP 和 UDP通信)

QT中的网络编程(TCP 和 UDP通信) 1.tcp1.1 tcp通信1.1.1 相比linux中tcp通信:1.1.2 QT中的tcp通信: 1.2 tcp通信流程1.2.1 服务器流程:1.2.1.1 示例代码1.2.1.2 现象 1.2.2 客户端流程:1.2.2.1 示例代码1.2.2.2 现象: …

第38课 常用快捷操作——双击“鼠标左键”进入Properties Panel

概述 在设计过程中,我们经常需要更改某个图元的属性,例如更该焊盘的大小、更改网络的名称等等。 在AD 20中,更改属性一般都是在Properties Panel上完成的。 当我们要更改某个图元的属性时,我们用鼠标左键双击它,就可…

从零开发一个B站视频数据统计Chrome插件

从零开发一个B站视频数据统计Chrome插件 前言 B站(哔哩哔哩)作为国内最大的弹幕视频网站之一,视频的播放量、点赞、投币、收藏等数据对于内容创作者和数据分析者来说非常重要。本文将带你一步步实现一个Chrome插件,自动统计并展…

[stm32] 4-1 USART(1)

文章目录 前言4-2 USART与串口通信(1)USART简介什么是USART?USART名字的含义?如何使用USART? USART的工作原理什么是串并转换?为什么要进行串并转换?移位寄存器串并行转换电路 USART寄存器组和完整框图 前言 本笔记内容&#xff…

记录两个免费开源又好用的后台模版vue3

一.element-plus-admin 一套基于vue3、element-plus、typesScript、vite的后台集成方案 1.简介 vue-element-plus-admin 是一个基于 element-plus 免费开源的中后台模版。使用了最新的 Vue3,Vite,Typescript等主流技术开发,开箱即用的中后…

【AI生产力工具】Windsurf,一款AI编程工具

Windsurf 是 Codeium 公司推出的一款 AI 编程助手,它是一款集成深度上下文感知、多模型协作和实时代码管理的综合开发环境(IDE)。 Windsurf 作为 AI 编程工具的核心价值在于 “上下文感知 + 多模型协作 + 自动化工作流”,其深度集成的智能体系统(如 Flows 和 Cascade)正…

Mybatisplus:一些常用功能

自动驼峰 mybatis-plus:configuration:# 开启驼峰命名规则,默认true开启map-underscore-to-camel-case: true# 控制台日志打印,便于查看SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImpl TableName 作用:表名注解,标识…

batch normalization和layer normalization区别

Normalization无非就是这样一个操作: 其中x是输入数据,维度为(B,T,C),其中B是batchsize,T是序列长度,C是embedding维度;括号内是标准化操作,γ和…

【多线程】七、POSIX信号量 环形队列的生产者消费者模型

文章目录 Ⅰ. 信号量一、POSIX 信号量的概念二、POSIX 信号量的类型区别三、POSIX 信号量与 SystemV 信号量的区别Ⅱ. 线程信号量基本原理一、为什么要引入信号量❓二、PV 操作三、POSIX 信号量的实现原理四、CAS操作介绍Ⅲ. POSIX未命名信号量接口一、初始化无名信号量二、销毁…

JVM 一文详解

目录 JVM 简介 JVM 中的内存区域划分 1. 堆(一个进程只有一份 ------ 线程共享) 2. 栈(一个进程可以有 N 份 ------ 线程私有) Java 虚拟机栈: 本机方法栈: 3. 程序计数器(一个线程可以…

代码随想录算法训练营第60期第二十二天打卡

大家好!我们今天来到了一个全新的章节,回溯算法,那究竟什么是回溯算法,我们应该如何理解回溯算法,以及回溯算法可以解决的题目,我们今天就来一探究竟。 第一部分 回溯算法理论基础 其实我可以告诉大家的是…

自主机器人模拟系统

一、系统概述 本代码实现了一个基于Pygame的2D自主机器人模拟系统,具备以下核心功能: 双模式控制:支持手动控制(WASD键)和自动导航模式(鼠标左键设定目标) 智能路径规划:采用改进型…

基于QT的仿QQ音乐播放器

一、项目介绍 该项目是基于QT开发的⾳乐播放软件,界面友好,功能丰富,主要功能如下: 窗口hand部分: 点击最小化按钮,窗口最小化 点击最大化按钮,窗口最大化 点击关闭按钮,程序退出 …

腾讯研究院:《工业大模型应用报告》(文末附下载方式)

腾讯研究院发布的《工业大模型应用报告》是一份系统探讨大模型技术在工业领域落地实践的研究成果。该报告基于腾讯在人工智能、云计算及产业互联网的实践经验,结合国内外典型案例,深入分析了工业大模型的行业价值、关键技术、应用场景及未来趋势。报告指…

【DeepMLF】具有可学习标记的多模态语言模型,用于情感分析中的深度融合

这是一篇我完全看不懂的论文,写的好晦涩,适合唬人,所以在方法部分我以大白话为主 abstract 在多模态情感分析(MSA)中,多模态融合已经得到了广泛的研究,但融合深度和多模态容量分配的作用还没有得到充分的研究。在这项工作中,我们将融合深度、可扩展性和专用多模容量作…

uniapp如何获取安卓原生的Intent对象

通过第三方app唤起,并且获取第三方app唤起时携带的参数 因为应用a唤起应用b时,应用b第一时间就要拿到参数token,所以需要将获取参数的方法写在APP.vue中的onLaunch钩子里,如果其他地方要用可以选择vuex或者采用本地缓存。 uniapp中plus.run…

tinycudann安装过程加ubuntu18.04gcc版本的升级(成功版!!!!)

使用的是 Linux,安装以下软件包 sudo apt-get install build-essential git安装 CUDA 并将 CUDA 安装添加到您的 PATH。 例如,如果您有 CUDA 12.6.3,请将以下内容添加到您的/usr/local/~/.bashrcexport PATH"/usr/local/cuda-12.6.3/bi…

Android 实现一个隐私弹窗

效果图如下&#xff1a; 1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数 2. 《用户协议》、《隐私政策》设置成可点击的&#xff0c;且颜色要区分出来 res/layout/dialog_privacy_policy.xml 文件 <?xml version"1.0" encoding"utf-8"?&…

[学成在线]22-自动部署项目

自动部署 实战流程 下边使用jenkins实现CI/CD的流程。 1、将代码使用Git托管 2、在jenkins创建任务&#xff0c;从Git拉取代码。 3、拉取代码后进行自动构建&#xff1a;测试、打包、部署。 首先将代码打成镜像包上传到docker私服。 自动创建容器、启动容器。 4、当有代…