【技能学习】迁移Blogs到其他Ubuntu系统.md

1、问题描述

在 Ubuntu 旧环境下,博客文件夹位于 /home/zhao/Blog,该目录已连接到 GitHub 仓库,并包含 Hexo 相关的配置文件和依赖。希望在 新 Ubuntu 系统 下重建该博客环境,并确保与 GitHub 仓库保持同步。然而,在执行 hexo 相关命令时遇到了一些问题,主要包括:

  1. .gitignore 配置可能导致部分文件未被同步。
  2. npx hexo generate 报错 TypeError: Object.fromEntries is not a function,怀疑是 Node.js 版本过旧
  3. hexo clean 报错 Command 'hexo' not found,怀疑是 Hexo 未全局安装

2、问题分析与解决方案

2.1 .gitignore 配置检查

.gitignore 文件中,以下内容可能影响同步:

1
2
3
4
5
6
7
8
# .DS_Store
# Thumbs.db
# db.json
# *.log
# node_modules/
# public/
# .deploy*/
# _multiconfig.yml
  • node_modules/public/ 目录可以忽略,因为它们可以通过 npm installhexo generate 重新生成。
  • db.json 可能包含 Hexo 的数据缓存,忽略它不会影响博客功能。

结论.gitignore 并未影响关键文件的同步,因此问题可能出现在 Node.js 版本或 Hexo 安装上。


2.2 解决 Node.js 版本过旧问题

错误信息:

1
TypeError: Object.fromEntries is not a function

原因: Object.fromEntries 需要 Node.js 12+,而旧版本 Node.js 可能低于 12.0.0。

解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
# 检查当前 Node.js 版本
node -v

# 更新 Node.js(推荐使用官方 PPA)
sudo apt update
sudo apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# 确保安装成功
node -v
npm -v

2.3 解决 Hexo 未全局安装问题

错误信息:

1
Command 'hexo' not found

原因: Hexo 可能只作为 本地依赖 存在于 node_modules/ 目录中,而没有全局安装。

解决方案 1(推荐):使用 npx 运行 Hexo

1
2
3
npx hexo clean
npx hexo generate
npx hexo server

解决方案 2(可选):全局安装 Hexo

1
2
3
4
npm install -g hexo-cli

# 确保安装成功
hexo -v

3、完整的博客环境恢复步骤

  1. 安装 Node.js 和 npm(参考 2.2 章节)。
  2. 进入博客目录 并安装依赖:
    1
    2
    cd /home/zhao/Blog
    npm install
  3. 清理缓存并重新生成博客
    1
    2
    3
    hexo clean
    hexo generate
    hexo server
  4. 本地访问博客
    在浏览器中打开 http://localhost:4000,检查博客是否正常显示。
  5. 同步 GitHub 远程仓库(可选)
    1
    2
    git remote -v  # 确保远程仓库正确
    git pull origin main # 拉取最新代码
  6. 配置DNS解析
    添加CNAME文件到仓库中,内容书写个人网站,此处我的为zhaoyuanhangblogs.top,然后进入仓库设置,选择Pages选项,下滑到DNS解析部分,开启强制HTTPS,并在上方添加同样的网站地址,然后Save,就会自动解析

4、总结

在新 Ubuntu 系统下迁移 Hexo 博客时,可能会遇到 Node.js 版本过旧Hexo 未全局安装 的问题。通过升级 Node.js、安装 Hexo 依赖以及正确执行 Hexo 命令,可以成功恢复博客环境并同步 GitHub 仓库。

至此,Hexo 博客已成功在新系统下恢复并可正常使用!🎉