在 GitHub 上托管技术博客时遇到的报错
本篇文章是我在初次生成博客静态文件时出现的报错及其解决方案。
报错展示:

执行hexo g报错Cannot read properties of null (reading 'utcOffset'),核心原因是myfirstBlog.md文章文件的「Front-matter(头部配置区域)」存在问题(时间 / 时区解析失败),具体是date字段格式错误、缺失,或格式不被 Hexo 识别,导致 Hexo 解析文章时间时获取不到时区偏移量(utcOffset),进而触发空值读取错误。
一、错误的核心原因
Hexo 文章开头的Front-matter(用---包裹的配置块)是必选的,其中date字段是时间解析的关键,常见问题:
date字段格式错误(比如手写了非法格式,如2026/2/6、2026-02-06缺时分秒,或符号错误);date字段完全缺失,且 Hexo 的全局时区配置(_config.yml)不完整,导致自动补全时间失败;Front-matter格式错误(比如缺少---包裹、冒号后没加空格),导致 Hexo 无法解析配置。
二、解决方法
步骤 1:打开出错的文章文件
用 VS Code / 记事本打开E:\HexoBlog\source\_posts\myfirstBlog.md,重点看文件最开头的Front-matter区域(必须用---包裹)。
步骤 2:修正 Front-matter 配置(核心)
删除原有错误的 Front-matter,替换为以下标准格式(直接复制粘贴到文章最开头):
---
title: myfirstBlog # 文章标题(和文件名一致即可)
date: 2026-02-06 21:20:00 # 时间格式必须是「年-月-日 时:分:秒」,不能省略时分秒
tags: [] # 可选,文章标签
categories: [] # 可选,文章分类
---
# 这里写你的文章正文
比如:我的第一篇Hexo技术博客...
关键要求:
date字段必须是YYYY-MM-DD HH:mm:ss格式(比如2026-02-06 21:20:00),不能简写为2026-02-06;- 冒号
:后必须加1 个空格(YAML 格式要求,比如date: 2026-02-06是对的,date:2026-02-06是错的); - 开头和结尾的
---必须存在,且单独占一行。
步骤 3:检查 Hexo 全局时区配置(兜底)
打开E:\HexoBlog\_config.yml,找到timezone配置项,确保是以下正确值(避免时区解析异常):
timezone: Asia/Shanghai # 中国时区,冒号后加空格,不能写Asia(这是之前警告的原因)
修改后按Ctrl+S保存_config.yml。
步骤 4:重新执行生成命令
回到 CMD 的E:\HexoBlog路径,先清理缓存再生成:
hexo clean && hexo g
成功标志:无红色报错,终端显示INFO Generated: xxx.html(比如2026/02/06/myfirstBlog/index.html),说明文章生成成功。
解决后的效果:

三、关于 Moment Timezone 警告
你看到的Moment Timezone has no data for Asia警告,是因为之前timezone写的是Asia(太宽泛),改成Asia/Shanghai后,这个警告会消失,且不影响功能(即使还有,也只是提示,不影响文章生成和部署)。
四、关键检查点
1. - 开头和结尾的`---`必须是**半角符号**,且单独占一行(不能和其他内容同行);
- `date`字段是 `2026-02-06 22:00:00`(年-月-日 时:分:秒,全半角符号,无省略);
- 所有冒号`:`后都有**1个半角空格**(比如`title: myfirstBlog`,不是`title:myfirstBlog`);
- 无全角符号、无特殊空格、无隐藏字符。
2. 设置文件编码为UTF-8(关键!) 在VS Code中:
点击右下角的编码显示(比如“GBK”/“ANSI”);
选择「通过编码保存」→ 选择「UTF-8」→ 确认保存。 (Hexo对非UTF-8编码的md文件解析易出问题,这是新手常忽略的点)
3. 修正Hexo全局时区配置(彻底解决时区警告) 打开`E:\HexoBlog\_config.yml`,找到`timezone`项,确保是: ```yaml timezone: Asia/Shanghai # 必须是具体时区,不是宽泛的Asia。
更多推荐



所有评论(0)