0%

迁移Hexo到Node.js 14 解决部署时报错

概述

重装系统之后,安装了高版本的Node.js,部署时报错,于是搜索之,发现原因是hexo版本不适配,一番尝试后解决。

思路为:新建一个hexo项目,使用其配置文件,并手动安装缺失依赖。

PS:降级肯定是可以解决的,不过不够优雅(强迫症)。

环境

Node.js 14.17.4, Hexo-cli 4.3.0, Hexo 5.4.0

报错信息

1
The "mode" argument must be integer. Received an instance of Object

测试过程

初始化

在另一个位置初始化hexo项目(实际上是克隆https://github.com/hexojs/hexo-starter.git):

1
hexo init

打开package.json,查看默认配置(使用时,可删除主题依赖hexo-theme-landscape

默认配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": ""
},
"dependencies": {
"hexo": "^5.0.0",
"hexo-generator-archive": "^1.0.0",
"hexo-generator-category": "^1.0.0",
"hexo-generator-index": "^2.0.0",
"hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^1.0.0",
"hexo-renderer-marked": "^4.0.0",
"hexo-renderer-stylus": "^2.0.0",
"hexo-server": "^2.0.0",
"hexo-theme-landscape": "^0.0.3"
}
}

安装缺失依赖

与之前的package.json对比,发现缺少hexo-generator-json-contenthexo-deployer-git依赖。
于是将package.json拷贝回去,覆盖旧版文件,删除node_modules文件夹后,手动安装依赖:

1
2
3
npm i hexo-generator-json-content --save
npm i hexo-deployer-git --save
npm install

本地生成及查看

1
2
hexo g
hexo s

部署

1
hexo d

配置文件修改

报错如下:

1
WARN  Deprecated config detected: "external_link" with a Boolean value is deprecated. See https://hexo.io/docs/configuration for more details.

将配置项修改为:

1
2
external_link:
enable: true

PS:部署到git建议使用ssh协议

部署偶尔提示Warning

1
Warning: Accessing non-existent property ‘lineno’ of module exports inside circular dependency

原因

nib:1.1.2使用的是旧版stylus:0.54.5

解决方案

在博客项目的package.json中添加(记得加逗号):

1
2
3
"resolutions": {
"stylus": "^0.54.8"
}

重新安装stylus

1
2
yarn remove hexo-renderer-stylus
yarn add hexo-renderer-stylus

然后执行yarn install

PS:yarn需要手动安装

参考

解决 Hexo 在使用 Node.js 14 时的 Accessing non-existent property ‘xxx’ of module exports inside circular dependency 问题