Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node 18 升级步骤及问题记录 #223

Open
funnycoderstar opened this issue Jan 17, 2023 · 0 comments
Open

Node 18 升级步骤及问题记录 #223

funnycoderstar opened this issue Jan 17, 2023 · 0 comments

Comments

@funnycoderstar
Copy link
Owner

funnycoderstar commented Jan 17, 2023

目录

  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的问题总结

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant