likes
comments
collection
share

Node 18 升级步骤及问题记录

作者站长头像
站长
· 阅读数 16

目录

  1. 为什么要升级
  2. 升级步骤
  3. 验证过程及范围
  4. 升级过程中遇到的一些问题

为什么要升级

  1. 当前使用的版本已不再维护。比如Node 14 到 2023-04-30 之后不再维护。可查看GitHub - nodejs/Release
  2. 升级之后打包效率会提升很多
  3. 有一些新增的API

升级步骤

其实升级的话比较简单,直接使用 nvm 进行升级即可,主要是要针对升级后的项目做一些验证,这里主要记录需要验证的一些点及遇到的一些问题和解决方案。

升级基础包及问题总结的文章会有一定的时效性,比如现在遇到的一些问题,过段时间官方进行升级了或者出了更好的方案,那目前这个文章里记录的可能就不太适用了,所以仅做参考

主要分为两步,第一步是在本地做验证,第二步是升级发布系统的环境,然后做线上验证。

步骤一:本地环境升级 node18 后进行验证

使用 nvm 管理 node 的版本。

  1. npm install NEW_VERSION
nvm install 18.13.0
nvm alias default v18.13.0
  1. 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 版本
  • 执行上线部署脚本可以正常运行

升级过程中遇到的一些问题

  1. npm i 报错 ERESOLVE could not resolve 或RESOLVE unable to resolve dependency tree(无法解析依赖关系树)
  2. npm run build / start 报错 Error:error:0308010C:digital enveloperoutines::unsupported
  3. centos7 环境 使用node18 的报错

具体的问题表现和解决方案可以看另一篇文章node14升级node18的问题总结

参考