vuecli4升级到5遇到的问题总结

vue2.6升级vue2.7(panjiachen升级指南)vue-cli5多页面应用升级的坑 webpack5 不再自动填充 Node 核心模块,如果你想使用的话需要从 npm 安装兼容的模块并自己包含它们。比如这里报错 ‘disableHostCheck’ 是未知属性,就可以在这个文档中查一下,看看它改成了什么。升级 sass 版本 和 sass-loader 版本,注意里面 deep 写法也需要改变,需要改为。升级完 vue-cli 需要解决一下 vue-cli 语法升级报的错,需要修改。如果不这么做,需要进行如下操作,十分麻烦。,使用的是 vue2.6.14,现在升级为 vue2.7.x。 阅读详情

前言

公司的项目是用vue-cli4构建的,最近要安装一个依赖,然后这个依赖在run serve是正常的,打包之后点击一次正常,再点击就报错。后面经过仔细排查,才发现是webpack的版本问题。

vue-cli4安装的webpack4的,vue-cli5安装的是webpack5的。在vue-cli5安装这个依赖打包就没有这个问题。

所以接下来就要把vue-cli4升级到vue-cli5,因为是跨版本升级,很多写法,用法都不一样,太酸爽了,所以总结下这个过程,也算是温故知新。

正文

我们首先升级vue-cli的全局依赖。

我用的是yarn,如下

js复制代码// npm
npm update -g @vue/cli 
// yarn
yarn global upgrade --latest @vue/cli

升级成功,打印vue -V可以查看最新的版本。

image.png

 

然后可以使用vue upgrade升级项目的cli依赖(@vue/cli-plugin-开头或者vue-cli-plugin- 开头)。

然后安装对应的依赖,就算升级成功了。

但是你以为就好了吗?

image.png

 

node-polyfill-webpack-plugin

webpack4会自动引入node的核心模块,比如path,process,os等等。而webpack5做了升级,不会自动引入,需要手动引入。

所以如果你的依赖有引用的话,打包的时候就会报错。

image.png

 

我们可以安装一个依赖来解决这个问题,node-polyfill-webpack-plugin。

它可以自动引入node的核心模块,在vue.config.js中配置即可。

js复制代码  const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')
  // ...省略部分配置
  configureWebpack: {
    plugins: [
      new NodePolyfillPlugin()
    ]
  },

webpack自定义plugin

我们之前在项目写了一个webpack自定义插件,然后升级了vue-cli5后,打包报错了。

js复制代码  // vue.config.js
  chainWebpack: (config) => {
    // 自定义插件
    config.plugin('customPluginName').use(require('./xx/plugins/xx/xx.js'))
  },
  configureWebpack: {
  }
js复制代码// custom plugin.js
const path = require('path')
class VersionPlugin {
  apply (compiler) {
    compiler.options.entry = {
      ...compiler.options.entry,
      version: './xxx/version.js'
    }
  }
}
module.exports = VersionPlugin

image.png

 

查看了webpack5的文档,才发现入口的写法更丰富了。

原来entry可以是字符串,或者是字符串对象,数组。

js复制代码entry: './app.js'

// or
entry: {
 app: './app.js',
 about: './xxx'
}

现在的webpack5在这个基础上,还支持import,dependOn等字段。

js复制代码entry: {
 app: {import: './app.js'},
 about: {import:'./xxx', dependOn: 'xxx'}
}

看了wepback的部分源码发现,如果你的对象的value是字符串,它会拼接好一个import字段,并且值是数组。如下:

image.png

 

但是我的自定义插件更改入口的执行时机晚于它这个时机,所以如果没有包裹import,它就会报错。

所以,自定义插件如果要更改入口,都要拼接import字段,防止报错。

js复制代码const path = require('path')
class VersionPlugin {
  apply (compiler) {
    compiler.options.entry = {
      ...compiler.options.entry,
      version: { import: ['./xxx/version.js'] }
    }
  }
}
module.exports = VersionPlugin

copy-webpack-plugin

首先我们项目用了copy-webpack-plugin来复制文件,vue-cli内置了它,但是版本不一样。

vue-cli4 安装了5.x.x版本的, vue-cli5 安装了9.x.x版本的。

js复制代码 // copy-webpack-plugin v5.x.x
 plugins: [
      new CopyWebpackPlugin([{
            from: path.resolve(__dirname, './xx/xx/*.js'),
            to: 'js/[name].[ext]'
          }])
    ]
    
 // copy-webpack-plugin v9.x.x
 plugins: [
      new CopyWebpackPlugin({
         patterns: [{
            from: path.resolve(__dirname, './xx/xx/*.js').replace(/\\/g, '/'),
            to: 'js/[name][ext]'
          }]
      })
    ]

可以看到[name].[ext]一个中间有点,一个中间没点。

还有带*的写法,需要调用replace去替换\,适应glob匹配。(不带*可以不用调用replace)

eslint

如果你有使用eslint,vue-cli5的eslint和eslint-plugin-vue的版本也升级了,跨版本升级会导致很多eslint规则都改变了,以前没有报错的,现在会疯狂报错。

image.png

 

比如组件的名称不能使用单个词,nextTick不能同时使用await和callback,不要对props传入的对象的key进行赋值修改。

太酸爽了,改这170个eslint错误。

总结

以上就是vuecli4升级到5遇到的问题总结,我建议不到万不得已不要在老项目上直接升级,不然会有很多bug等着你修复,最好是在新的项目使用vue-cli5。

不说了,我eslint的bug还没改完,还在改。。。

《Webpack5 升级》- Vue2.x 组件库 Webpack3 升 5 Vue2.x 组件库 Webpack3 升 5 阅读详情

相关推荐

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

当将 “type”: “module” 添加到 package.json 中,Node.js 会将 .js 文件作为 ECMAScript Modules (ESM) 来处理。这与在 package.json 中设置 “type”: “module” 相类似,都是为了确保 Node.js 以 ESM 格式解析和执行模块。默认情况下 Node.js 默认将 .js 文件作为 CommonJS (CJS) 模块来处理。Vite 官方 Github 仓库下的 ISSUE:“

xiangzhihong8的专栏 1万+

Vue-CLI 4 搭建Vue项目

文章目录一、Node.js安装二、Vue-Cli安装三、Vue项目创建1、项目创建2、项目依赖导入2.1 vue-router(路由)3、项目配置3.1 router.js(路由配置)4、测试效果 一、Node.js安装 到Node.js官网(https://nodejs.org/zh-cn/)上,下载并安装Node.js,选择【长期维护版】即可 使用安装包安装,选择安装路径可以根据自己的需要改一下(比如我安装在了D:\Environment\nodejs\目录下)。 这个Necessary Tools

God-Excious的博客 3197

通过python下载西门子技术中心文档

本篇文章纯粹记录如何下载通过python下载西门子技术中心文档,所下载文档完全自己学习使用,非商业用途

John_09040211的博客 561

最新【vue】使用vue-cli5

步骤4:是否开启history模式 选择否步骤6:选择你想把你的配置文件放在一个独立的配置文件中?还是放到package.json中?选择package.json即可 没多大区别步骤7:询问你是否保存以上设置 方便下次选择 这里选择 否 如果选择是 下面还要给你的配 置 取个名字步骤8:cd 进入项目 npm run serve 启动项目步骤9:出现两个地址 按住Ctrl键 点击 出现下面页面 项目创建成功目录结构====主要目录结构入口页面:程序显示的第一个页面。

2401_85122999的博客 572

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 目录 Knowledge Engineering知识工程的简介 0.1、What 0.2、How 0.3、Why 1、知识工程过程的5个活动 2、知识图谱的应用 Knowledge Engineering知识工程的发展 1、前知识工程时期——1950-1970时期:图...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5335

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 574

Vue-cli安装问题及解决方案

安装脚手架时报了好多错,最后解决了才发现原来很简单 错误一:输入vue create cms-ui后 vue create cms-ui 显示:vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6.说明你版本不够,需要使用以下两种命令卸载后重新安装。 再次输入vue create cms-ui出现下图,为卸载成功 然后输入npm install -g @vue/cli后 错误二:显示npm W.

m0_54239379的博客 1251

【OpenCV】第二十四章: 图像特征匹配:暴力特征匹配算法、FLANN特征匹配算法

参数match就是匹配器的匹配结果;参数crossCheck表示交叉检查,意思就是用第一组中的每个描述子和第二组的所有描述子进行匹配完后,再用第二组中的每个描述子和第一组的所有描述子进行匹配,这两步做完后,两步同时找到的相同的匹配对儿就是有效的匹配。方法一:用匹配器的match方法,进行特征匹配:match = bf.match(des1, des2),就是对两幅图的描述子进行计算,返回匹配的结果。匹配的时候是计算两个描述子之间的相似度,然后返回相似度最高的一对儿匹配点,也就是最终的匹配结果。

因为热爱所以坚持 5061

Uncaught ReferenceError: process is not defined

最近在搞老项目升级,将Vue2.6.11里的vuecli5.0.8升级到vite最新版本4.4.9,中间遇到不少问题,有机会以后做记录。

chenacxz的博客 3793

《UDS协议从入门到精通》系列——图解0x83:访问时间参数

详细介绍UDS协议0x83服务,目标ECU的时序参数设置有哪些注意点?

车载系统攻城狮 2138

置顶必读(2) |《滚雪球学数学建模》专栏目录 & 历年国赛/美赛真题库 & 真题解析(持续更新中)

本专栏《滚雪球学数学建模》采用“从零开始、逐步滚雪球”的学习路径,把数学建模的基础理论、方法工具与大量实战真题(尤其是国赛题,涵盖2025-1992所有真题)有机融合,形成一套系统化训练路线。非常适合零基础入门、希望提升模型与工程化能力的本科/研究生,以及备战全国大学生数学建模竞赛(国赛/省赛)的同学。加油,我们一起把建模能力打造成可迁移的核心竞争力!

**My Coding Family** 26万+

安装@vue/cli时候,升级版本造成冲突的解决方法

【代码】安装@vue/cli时候,升级版本造成冲突的解决方法。

qq_40572023的博客 1157

实时数字人SoulX-FlashHead 音视频不对齐解决

【代码】实时数字人SoulX-FlashHead 音视频不对齐解决。

jacke121的专栏 200

vuecli4升级到vuecli5踩坑记录

项目以来的module版本很新,用到了es2020的语法,在vuecli4版本上死活编译不成功,升级5后解决,这个过程中在配置vue.config.js中遇到了很多问题,记录下来或许能给其他人提供帮助~ vuecli官网英文已经更新为最新的cli5但中文还停留在cli4,导致我最开始在查资料时一直没有查到官方资料,后来偶然间切换英文才发现。 1.配置scss,pretendData变为additionalData 2.启用css moudles 这个vuecli官网也有记录Working wi.

chunru_liu的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

vue cli 3 升级到 vue cli 4 方法步骤及升级点总结

vue cli 3 升级到 vue cli 4 指南 vue cli 3 升级到 vue cli 4 方法步骤及升级点总结 vue-cli 3升级vue-cli 4 官方英文升级文档,中文滞后 一.首先,在全局安装最新的 Vue CLI: npm install -g @vue/cli # OR yarn global add @vue/cli 检查安装的版本 vue -V # 输出:@vue/cli 4.x.x 说明@vue/cli 4安装成功( vue cli 3的版本会输出 3.x.x )

前端开发者 8万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vue cli项目升级--vue cli3升级到vue cli4

本文介绍如何升级vue项目的vue cli版本。

IT利刃出鞘的博客 9374

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

vuecli2.x升级到vuecli4.x,vue项目搬迁

前言 项目之前是vue2.x+vuecli2.9版本的脚手架进行搭建的,因为项目越来越庞大,实现动态路由懒加载时打包会卡死,需打包将近半个小时,所以考虑升级vuecli,提高打包速度。 一、vuecli2升级到vuecli4 1.卸载旧版本安装新版本 打开终端输入命令行检查当前版本:vue -V(是大写V,不是小写) 卸载旧版本:npm uninstall -g vue-cli 或cnpm uninstall -g vue-cli 安装新版本:npm install -g @vue/cli 或cnpm i

dhlg123的博客 1977

vuecli2 脚手架升级到 vuecli5 以及打包部署注意事项

这里引入mixins.scss的原因是 在mixin.scss也使用了scss全局的变量。所以需要交个scss-loader去处理。3. 打包部署 会报不能读取 theme。发现是 variables 取不到theme造成的,目前先注释掉。

qq_36571836的博客 2000

vuecli4 版本升级和遇到的一些问题

比如我现在的vuecli版本是4.5.6 当我想要升级的时候,发现我不管如何执行下面的操作,等最终查看版本的时候还是4.5.6 // 卸载 npm uninstall vue-cli -g // 重新安装 npm install -g @vue/cli // 升级 npm update -g @vue/cli 经过网上查阅相关资料,并测试之后发现,你要先输入命令 where vue 然后删除这两个旧的,不要删除错了,接着再输入指令 vue -V,就可以了 顺便提一下...

u014678583的博客 672

vue之VueCli4的安装及使用

一、前言 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过@vue/cli实现的交互式的项目脚手架。 通过@vue/cli+@vue/cli-service-global实现的零配置原型开发。 一个运行时依赖 (@vue/cli-service),该依赖: 可升级; 基于 webpack 构建,并带有合理的默认配置; 可以通过项目内的配置文件进行配置; 可以通过插件进行扩展。 一个丰富的官方插件集合,集成了前端生态中最好的工具。 ...

weixin_51373750的博客 3686

vuecli2升级至vuecli3

一. 卸载旧版本vuecli与安装新版本vuecli npm uninstall vue-cli -g npm install -g @vue/cli 二.创建一个新的项目 vue create hello-world 三.正式开始改造 1. 直接复制替换src文件夹2. 安装项目需要的依赖(可以将原来package.json dependencies下需要的直接复制过来,然...

weixin_43837268的博客 2387

VueCLI和Vite

1. VueCLI 1.1 Vue CLI脚手架 什么是Vue脚手架? 我们前面学习了如何通过webpack配置Vue的开发环境,但是在真实开发中我们不可能每一个项目从头来完成所有的webpack配置,这样显示开发的效率会大大的降低; 所以在真实开发中,我们通常会使用脚手架来创建一个项目,Vue的项目我们使用的就是Vue的脚手架; 脚手架其实是建筑工程中的一个概念,在我们软件工程中也会将一些帮助我们搭建项目的工具称之为脚手架。 Vue的脚手架就是Vue CLI: CLI是Comman.

桑桑和阿战 8387

vuecli2升级到vuecli3

vuecli2升级到vuecli3 1. 卸载老版本vuecli(1.x, 2.x) npm uninstall vue-cli -g 或者 yarn global remove vue-cli 卸载掉之前的老的版本的vuecli 2. node安装最新版本的(8.x) 3. 安装最新的vuecli npm install -g @vue/cli 4. 查看已经安装的版本号 vue --ve...

James_liPeng的博客 1006

卸载vuecli2安装vuecli3,创建vuecli3项目具体步骤

1,yarn使用 安装yarn npm install -g yarn 查看yarn版本 yarn -v yarn安装vue yarn add vue yarn安装固定vue版本 yarn add vue@3.0.0 yarn升级vue版本 yarn upgrade vue @3.2.2 yarn 移出vue yarn remove vue yarn 安装所有依赖 yarn install ...

m0_61169066的博客 3563
上一篇: 【electron】5分钟把网页打包成可安装的exe桌面应用
下一篇: 自定义组件使用v-model,太好用了
Cipher_Y
博客等级 码龄3年 93粉丝 98原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值