hexo版本升级还是很简单的,先切到hexo目录,使用npm i hexo-cli -g升级全局hexo,接下来再使用npm-checknpm-upgrade,npm-update升级相关依赖。

正式升级前使用hexo version查看下当前版本:

$ hexo version
INFO  Validating config
INFO  ==================================
  ███╗   ██╗███████╗██╗  ██╗████████╗
  ████╗  ██║██╔════╝╚██╗██╔╝╚══██╔══╝
  ██╔██╗ ██║█████╗   ╚███╔╝    ██║
  ██║╚██╗██║██╔══╝   ██╔██╗    ██║
  ██║ ╚████║███████╗██╔╝ ██╗   ██║
  ╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝   ╚═╝
========================================
NexT version 8.13.1
Documentation: https://theme-next.js.org
========================================
hexo: 5.4.2
hexo-cli: 4.3.0
os: darwin 22.1.0 13.0.1

node: 12.14.1
v8: 7.7.299.13-node.16
uv: 1.33.1
zlib: 1.2.11
brotli: 1.0.7
ares: 1.15.0
modules: 72
nghttp2: 1.40.0
napi: 5
llhttp: 2.0.1
http_parser: 2.8.0
openssl: 1.1.1d
cldr: 35.1
icu: 64.2
tz: 2019c
unicode: 12.1

使用npm i hexo-cli -g升级全局hexo

$ npm i hexo-cli -g
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'hexo-cli@4.3.1',
npm WARN EBADENGINE   required: { node: '>=14' },
npm WARN EBADENGINE   current: { node: 'v12.14.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'abbrev@2.0.0',
npm WARN EBADENGINE   required: { node: '^14.17.0 || ^16.13.0 || >=18.0.0' },
npm WARN EBADENGINE   current: { node: 'v12.14.1', npm: '8.19.2' }
npm WARN EBADENGINE }
...

通过输出内容发现node版本过低导致升级失败,所以先升级node版本,需要的最低node版本是v14.17.0,直接nvm install v14.17.0升级node,升级完成后再次执行npm i hexo-cli -g。再次执行hexo verson就可以看到升级到6.3.0版本了。

$ hexo version           
INFO  Validating config
hexo: 6.3.0
hexo-cli: 4.3.1
os: darwin 22.1.0 13.0.1

node: 16.20.0
v8: 9.4.146.26-node.26
uv: 1.43.0
zlib: 1.2.11
brotli: 1.0.9
ares: 1.19.0
modules: 93
nghttp2: 1.47.0
napi: 8
llhttp: 6.0.10
openssl: 1.1.1t+quic
cldr: 41.0
icu: 71.1
tz: 2022f
unicode: 14.0
ngtcp2: 0.8.1
nghttp3: 0.7.0

接下来依次执行以下命令升级依赖包:

# 安装npm-check 如果之前安装过可以跳过
$ npm install -g npm-check

# 检查需要升级的依赖
$ npm-check

# 安装npm-upgrade 如果之前安装过可以跳过
$ npm install -g npm-upgrade

# 更新package.json
$ npm-upgrade

# 更新依赖
$ npm update --save

升级完成后,可以使用hexo cleanhexo ghexo s看下效果,如果一切正常那么恭喜升级成功了。非常不幸楼主这里执行hexo clean直接报下面这个错误:

$ hexo clean
INFO  Validating config
ERROR Script load failed: node_modules/hexo-theme-next/scripts/helpers/engine.js
Error: Cannot find module 'css'
Require stack:
- /Users/vector/dev/book/hexotest/node_modules/hexo-theme-next/scripts/events/lib/utils.js
- /Users/vector/dev/book/hexotest/node_modules/hexo-theme-next/scripts/helpers/engine.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1026:15)
    at Function.Module._load (node:internal/modules/cjs/loader:871:27)
    at Module.require (node:internal/modules/cjs/loader:1098:19)
    at require (node:internal/modules/cjs/helpers:108:18)
    at Object.<anonymous> (/Users/vector/dev/book/hexotest/node_modules/hexo-theme-next/scripts/events/lib/utils.js:5:13)
...    

通过报错信息得知,找不到cssmodule,直接尝试安装npm install css,安装成功后再次执行hexo clean成功了,真棒,还好不是其他稀奇古怪的问题,不然就太为难楼主这个node渣渣了。