前端项目 node8升级到node16,代码升级汇总
背景
公司的项目是vue项目,环境是node@8x版本的,最近我创建react hook的项目,发现至少需要node14才支持,打开官网才发现node都已经到16版本了。失策啊,失策。于是直接升级到最高版本。结果项目直接跑不起来了,看了下日志问题挺多的。我折腾了小1天才弄好。里面坑不少,最关键的是网上好多人的帖子太操蛋了,太水了。在这立个贴,和大家分享一下,如果遇到一样的问题,应该会有很大的帮助。
对了,我升级的是vue2.0的项目,而我vue3.0的项目完全不受影响。原因嘛,我大致看了下package.json文件,cli都是最新的,而且没有node-sass。我想可能是内置了。所以在这再提醒一下,老版本vue-cli创建的项目,应该会遇到和我一样的问题。
问题和解决方法汇总
1、node-sass 升级,直接导致项目运行失败
2、如果用vue-cli创建的项目需要升级,webpack支持到5.0版本,自己搭建的得自己升级了
3、polyfill 弃用了,使用 core-js regenerator-runtime
4、
具体操作
1、首先安装node最新版本,截至我发帖时间,最新稳定版本为 node16.13.1,
2、更新node-sass,每个版本的node,都会有对应版本的node-sass。而且好像是14之后的版本更新很大,直接不兼容了,所以会报错。这里我们先去下载node-sass的版本包 点这里下载 ,下载第一个文件(下边有贴图)。下载成功之后,将这个包,放到你的账户下,具体路径是 C:\Users\你的用户名\AppData\Roaming\npm-cache\node-sass , 然后创建一个名为 6.0.1 的文件夹,然后把刚下载的包,复制到这个文件夹中。我下面都贴图了。这样能保证你安装node-sass依赖的时候不会一直报错。
3、安装node-sass@6.0.1,npm i --save node-sass@6.0.1 如果还是报错,检查一下上述几步是否有漏的,正常不会报错了。
4、升级vue-cli,以下是正常的升级流程。先试一下,可能会有人更新失败,再说一个粗暴点的方法,用vue-cli直接创建一个vue2.0的新项目,将老项目node-modules删除,将新项目的node-modules复制过来,然后新项目的package.json的 devDependencies 部分,一条条的替换老项目的,一共三四条。
vue -V 检查当前vue-cli的版本, 如果报错 指令不存在 或者没权限啥的, 在powershell里面执行 start cmd 直接打开cmd输入这些指令
npm uninstall vue-cli -g 卸载老版本
npm install -g @vue/cli 全局安装新版本
vue -V 检查版本号,我的是4.5.15
vue upgrade 升级项目中脚手架相关的包
5、然后保险起见,还是删除整个node-dules,删除package-lock.json,都清空。
6、删除整个node-dules,看一下main.js和package.json 有没有使用 @babel/polyfill 这个依赖,这个包现在已经废弃了,换成了 core-js regenerator-runtime 这两个包,装一下这两个依赖,然后修改main.js入口文件,去掉废弃的,增加新的2个,下面有代码贴图。
npm uninstall @babel/polyfill // 卸载@babel/polyfill
npm install core-js
npm install regenerator-runtime
7、重新执行 npm install ,安装所有依赖,重新启动项目即可





总结
东西其实不多,主要卡在node-sass安装一直失败,手动添加了版本包。在一个就是新版本的cli都用的 core-js,需要改项目代码,否则就会一堆报错,提示缺各种依赖。这两块浪费了我大量的时间,网上一堆没用的文章,各种粘贴复制、转载,真的想骂娘。
最后,建议大家搜索的东西的时候加上 -(CSDN) -(脚本之家) 哈哈,把垃圾信息都屏蔽掉。基本剩下的都是博客园、简书啥的,
前端项目 node8升级到node16,代码升级汇总的更多相关文章
- VC6完整项目代码升级到VS2010
VC6完整项目代码升级到VS2010,有需要请联系我,专业C++开发,邮箱153786575@qq.com
- 前端项目模块化的实践2:使用 Webpack 打包基础设施代码
以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...
- 基于node的前端项目代码包发布至nexus
目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 配置angular.json文件... 1 2.2. 配置package.json文件... 1 2.3. 复制git地址. ...
- H5+ 重写在线升级版本比较代码
重写h5+在线升级版本比较代码 hello h5+版本在线升级提供了如下的版本比较方法,逻辑比较繁琐,相关判断多余,非常不宜读. 先判断新旧版本有无, 接着分割为数组比较数组项大小,而且还只取了前四项 ...
- 手把手教你用SonarQube+Jenkins搭建--前端项目--代码质量管理平台 (Window系统)
前言 网上教程大多介绍的是Linux系统下SonarQube+Jenkins如何使用,这是因为这两款软件一般都是部署在服务器上,而大多数服务器,采用的都是Linux系统.大多数服务器用Linux的原因 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- 基于Gulp + Browserify构建es6环境下的自动化前端项目
随着React.Angular2.Redux等前沿的前端框架越来越流行,使用webpack.gulp等工具构建前端自动化项目也随之变得越来越重要.鉴于目前业界普遍更流行使用webpack来构建es6( ...
- erp前端项目总结
目录 一.项目目录(vue-cli2) 二.开发实践 (一) 权限 (二) 各组件间传递数据 (四) 路由 (七) 组织部门业务员三级联动 (八) 优化性能,手动绑定下拉框数据 (九) 验证 (十) ...
- 对于jenkins上前端项目 npm 或 yarn 打包 及 部署 使用
1.npm和yarn镜像源地址 npmMirror ~~~~~ https://skimdb.npmjs.com/registry/ edunpm ~~~~~~ http://registry.enp ...
随机推荐
- a这个词根
a是个词根,有三种意思:1. 以某种状态或方式,如: ablaze, afire, aflame, alight, aloud, alive, afloat等2. at, in, on, to sth ...
- Learning Spark中文版--第六章--Spark高级编程(2)
Working on a Per-Partition Basis(基于分区的操作) 以每个分区为基础处理数据使我们可以避免为每个数据项重做配置工作.如打开数据库连接或者创建随机数生成器这样的操作,我们 ...
- Hadoop 相关知识点(二)
1.HDFS副本机制 Hadoopde 默认副本布局策略是: (1)在运行客户端的节点上放置第一个副本(如果客户端运行在集群之外,就随机选择一个节点,不过系统会避免选择那些存储太满或者太忙的节点): ...
- flink02------1.自定义source 2. StreamingSink 3 Time 4窗口 5 watermark
1.自定义sink 在flink中,sink负责最终数据的输出.使用DataStream实例中的addSink方法,传入自定义的sink类 定义一个printSink(),使得其打印显示的是真正的ta ...
- 石墨文档Websocket百万长连接技术实践
引言 在石墨文档的部分业务中,例如文档分享.评论.幻灯片演示和文档表格跟随等场景,涉及到多客户端数据同步和服务端批量数据推送的需求,一般的 HTTP 协议无法满足服务端主动 Push 数据的场景,因此 ...
- rust方法集
随机数.数字对比.控制台输入 use std::io; use std::cmp::Ordering; use rand::Rng; fn main() { println!("please ...
- Tomcat(2):配置Tomcat
1,打开IDEA创建一个项目 2,配置Tomcat服务器 3,运行 5,成功 t t
- Dockers启动Kafka
首先安装 Confluent Platform Quick Start for Confluent Platform (Local install) Use this quick start to g ...
- spring的不同事务传播行为和用途。
1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGATION_SUPPORTS:支持当前事务,如果 ...
- Servlet+Jdbc+mysql实现登陆功能
首先是新建一个servlet,servlet中有dopost和doget方法 一般的表格提交都是用post方法,故在dopost里面写入逻辑代码 下面是其逻辑代码Check.java protecte ...