Node 18 升级步骤及问题记录
目录
- 为什么要升级
- 升级步骤
- 验证过程及范围
- 升级过程中遇到的一些问题
为什么要升级
- 当前使用的版本已不再维护。比如Node 14 到 2023-04-30 之后不再维护。可查看GitHub - nodejs/Release
- 升级之后打包效率会提升很多
- 有一些新增的API
升级步骤
其实升级的话比较简单,直接使用 nvm 进行升级即可,主要是要针对升级后的项目做一些验证,这里主要记录需要验证的一些点及遇到的一些问题和解决方案。
升级基础包及问题总结的文章会有一定的时效性,比如现在遇到的一些问题,过段时间官方进行升级了或者出了更好的方案,那目前这个文章里记录的可能就不太适用了,所以仅做参考
主要分为两步,第一步是在本地做验证,第二步是升级发布系统的环境,然后做线上验证。
步骤一:本地环境升级 node18 后进行验证
使用 nvm 管理 node 的版本。
- npm install NEW_VERSION
nvm install 18.13.0
nvm alias default v18.13.0
-
Reinstall related dependencies
2.1.针对单独的项目而言,直接执行
rm -rf node_modules rm -rf package.lock.json npm install
2.2 还有一些包是安装在全局的,当然可以等遇到报错 xx not found 的时候再单独手动安装,也可以直接执行下面命令避免手动重新安装所有的全局包。 具体可参考 How to properly upgrade node using nvm
nvm install NEW_VERSION --reinstall-packages-from=OLD_VERSION // eg: nvm install 18.13.0 —reinstall-packages-from=14.20.0
步骤二:发布系统切换 node18
验证过程及范围
本地
按照上述升级步骤在本地执行以下脚本是否可以正常运行
- npm install
- npm run dev
- npm run build
如果要验证的项目比较多,可以编写 node 脚本做自动验证。大致思路就是使用 node 的 fs api 读取本地项目目录,遍历执行上述需要验证的脚本,获取脚本执行结果,调用 fs.appendFileSync 将执行结果放入到一个文件中,方便去查看和分析问题
线上
- 确认线上部署方案
- 如果是 docker 则直接修改 node 的依赖版本
- 修改部署脚本的 node 版本
- 执行上线部署脚本可以正常运行
升级过程中遇到的一些问题
- npm i 报错 ERESOLVE could not resolve 或RESOLVE unable to resolve dependency tree(无法解析依赖关系树)
- npm run build / start 报错 Error:error:0308010C:digital enveloperoutines::unsupported
- centos7 环境 使用node18 的报错
具体的问题表现和解决方案可以看另一篇文章node14升级node18的问题总结
参考
转载自:https://juejin.cn/post/7196698315836162104