0%

2023 博客重新开张小记

前言

在接近三年后,我的博客又开张了(也不知道开多久)。之前一年半主要在 CSDN 上发布一些经验,最近想起来还有博客,于是准备多平台同步了(后期还考虑知乎专栏)。本文简单记录一些重新开张过程的琐事。Vercel 似乎被 ban 了有点难受。

正文

上次在这个平台写文感觉还是大四准备毕业的时候,现在已经博三了,时间过得好快。近期和朋友聊过觉得不能只把内容传到 CSDN,还是要多平台经营一下。虽然大家都蛮看不起 CSDN(确实有些地方做的让人难受),但是 CSDN 的搜索引擎优化还是做的好,相比之前在这个博客上百位数的访问量(可能还都是爬虫),CSDN 一年多已经十多万访问了,给人的成就感还是很不一样的。

后面时间估计也不多,简单记录一下最近为了重新启动博客所做的努力。

首先是 vercel 似乎被国内 ban 了。参考了 https://blog.csdn.net/guang_liang_/article/details/129546339,去域名商哪里改了 DNS 解析,似乎有用又没用。(校园网依旧无法访问,但是手机流量可以,很神奇)

之后是更新内容,vercel 之前就配置好了 GitHub Action,push 以后自动更新,但是这次就报错了。

1
Error: Node.js Version "12.x" is discontinued and must be upgraded. Please set Node.js Version to 18.x in your Project Settings to use Node.js 18.

搜了一下没太看明白,最后直接就在 vercel 的 web 界面进入项目设置,然后把 node 版本改到了 18 似乎就好了(原来是 12,时间过的好快啊)

然而重新 build 以后又变成了白板。Vercel 没有显示 build 错误,但是打开网页是白板。

为了 debug,只好本地 hexo server 一下看看。但是发现本地之前重做系统什么都没了。重新装 hexo。

重新安装配置 hexo

电脑上 nodejs 之类什么都没有了。完全重新装。参考 hexo 官网.

首先安装 Node.js 。官方推荐了 nvs。我是 Windows 环境,按照 nvs 的 GitHub repo 使用下面命令。

1
winget install jasongin.nvs

有趣的是,Windows 10 也可以使用 winget。(Powershell)

这个时候其实只是一个 Node.js 版本管理器,(感觉像conda),还要安装具体的 Node.js 。

1
2
3
nvs add lts
nvs use lts
nvs link lts

三个命令一气呵成就好了。可以使用 npm 了。这里有个小插曲。一开始是无法使用 nvs 的,因为本质上 nvs 似乎是属于脚本,powershell 为了保护安全默认禁用脚本。

1
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

用上面的命令,然后 Yes 就可以执行 nvs 了。

然后安装 hexo。

1
npm install -g hexo-cli

安装完成以后就可以使用 hexo s 命令了。但是奇怪的是一直在卡顿报错。

1
2
3
4
5
6
7
(node:33476) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:33476) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:33476) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
(node:33476) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(node:33476) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:33476) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency

搜了一下,好一则博的解决方案有用。具体来说就是下面的命令(原博客用的 yarn 我换成 npm就好了)

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

然后问题就解决了。

修复 vercel

安装完成 hexo 后,我发现 hexo s 命令搭建的本地服务完全是正常的,但是布置为何 vercel 网站打开的结果是一个白板。检查了一下 public 目录虽然有各种各样的文件,但是文件大小都是0kB。

之前其实一直没太懂 npm 之类的,然后刚刚发现我的hexo是4.x的旧版本,而现在新版本已经6.x了。于是我搜索version发现了项目目录有一个文件内容如下,似乎是锁定了hexo的版本。

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
28
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "4.2.1"
},
"dependencies": {
"hexo": "^4.2.1",
"hexo-generator-archive": "^1.0.0",
"hexo-generator-baidu-sitemap": "^0.1.6",
"hexo-generator-category": "^1.0.0",
"hexo-generator-index": "^1.0.0",
"hexo-generator-searchdb": "^1.3.3",
"hexo-generator-sitemap": "^2.0.0",
"hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^6.1.1",
"hexo-renderer-stylus": "^3.0.0",
"hexo-server": "^1.0.0"
}
}

然后发现 ^ 符号其实表示大版本内更新,所以一直都是 4.x 版本,而最新已经 7.0 了。全都改成 * 然后重新 npm update 。

然后文件内容变成了:

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
28
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "7.0.0-rc2"
},
"dependencies": {
"hexo": "^7.0.0-rc2",
"hexo-generator-archive": "*",
"hexo-generator-baidu-sitemap": "*",
"hexo-generator-category": "*",
"hexo-generator-index": "*",
"hexo-generator-searchdb": "*",
"hexo-generator-sitemap": "*",
"hexo-generator-tag": "*",
"hexo-renderer-ejs": "*",
"hexo-renderer-marked": "*",
"hexo-renderer-stylus": "*",
"hexo-server": "*"
}
}

嗯……然后重新 hexo generate 。结果发现 output 的目录大小不在是 0 了!看来还真的是版本的问题。重新push一下试试看。
(虽然提示了一堆 vulnerabilities 。。)

似乎有的是因为 ejs 版本,但是今天时间有限先不做测试了。

改完 hexo 版本成功 generate 了!

Vulnerabilities 解决

1
18 vulnerabilities (2 low, 3 moderate, 8 high, 5 critical)

最近几次每次 npm update 或者是 npm install 都会提示我有很多 Vulnerabilities,强迫症实在忍不了了,按照提示的 npm audit fixnpm audit fix -f 也都试了,并无用。然后看了一眼 audit 命令输出的内容,发现主要是因为使用老旧版本的 package。检查了一下基本都是因为一个叫 hexo-generator-baidu-sitemap 的库依赖了老旧版本。

1
2
3
4
5
6
7
8
9
ejs  <3.1.7
Severity: critical
ejs template injection vulnerability - https://github.com/advisories/GHSA-phwq-j96m-2c2q
No fix available
node_modules/ejs
hexo-generator-baidu-sitemap *
Depends on vulnerable versions of ejs
Depends on vulnerable versions of hexo
node_modules/hexo-generator-baidu-sitemap

搜了一下这个项目,果然作者不维护了。https://github.com/coneycode/hexo-generator-baidu-sitemap

甚至很多项目文件是9年前的老古董。。最近一次更新是三年前。

回忆了一下,之前好像配置文件里有配置 baidu sitemap 所以可能自动安装配置了吧。试试直接删除。

1
npm uninstall hexo-generator-baidu-sitemap

输出如下。

1
2
3
4
5
6
removed 250 packages, and audited 248 packages in 2s

27 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities

本来准备打持久战的,然后卸载一个无人维护的包问题就解决了。。

另外在整个目录都搜了一下关键词 hexo-generator-baidu-sitemap,发现只有配置文件里使用了这个关键词。

去配置文件 _config.yml 里把 baidu-sitemap 相关的一行注释了。

1
2
Plugins:
# - hexo-generator-baidu-sitemap

问题解决!