本篇文章是我在初次生成博客静态文件时出现的报错及其解决方案。

报错展示:

执行hexo g报错Cannot read properties of null (reading 'utcOffset'),核心原因是myfirstBlog.md文章文件的「Front-matter(头部配置区域)」存在问题(时间 / 时区解析失败),具体是date字段格式错误、缺失,或格式不被 Hexo 识别,导致 Hexo 解析文章时间时获取不到时区偏移量(utcOffset),进而触发空值读取错误。

一、错误的核心原因

Hexo 文章开头的Front-matter(用---包裹的配置块)是必选的,其中date字段是时间解析的关键,常见问题:

  1. date字段格式错误(比如手写了非法格式,如2026/2/62026-02-06缺时分秒,或符号错误);
  2. date字段完全缺失,且 Hexo 的全局时区配置(_config.yml)不完整,导致自动补全时间失败;
  3. 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。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐