hexo执行generate时的奇怪问题

前言

由于把blog的源文件copy到家里的电脑,主要方便临时记录。
在执行 hexo g 时遇到了一些奇怪的问题,这里简单记录下。

hexo 的 post文件内容结构如下

;---
title: my test title
date: 2019‎-05‎-06 23:24:30
tags:
;---
content

上面date为 post的创建日期.假如为空的话,hexo的post生成器会取文件的创建时间;
相关代码为

  if (data.date) {
if (timezone) data.date = common.timezone(data.date, timezone);
} else {
data.date = stats.birthtime;//文件的创建日期
}

开始调试

回到问题本身

我的其中一篇post,是2017时候,第一次玩hexo,hexo自动为我创建的hello-world;
下面展示部分片段

;---
title: Hello World
date: 2017‎-0‎1‎-‎22‎ 11:24:30
tags:
;---
Welcome to [Hexo](https://hexo.io/)!...

date:2017‎-0‎1‎-‎22‎ 11:24:30;
当hexo生成post静态页面时却并没有正确解析出日期。

为了弄清楚为什么,下面开始debug源码.


上图为有问题的post的调试图.


本图为正常post的调试图.

通过上图比较,发现date对应的日期字符串基本没啥差别,符合yyyy-MM-dd HH:mm:ss格式,但是 hello-word的post日期却并没有正确解析处理。

zhiyin

上面通过调试发现并没有找到原因,我觉得可能是我的眼睛欺骗了我,只看到了表面,于是通过EditPlus直接查看文件的十六进制的内容;

图中第二个文件的日期字节序中多了 E2 80 8E 这个三个字节(Left-to-right mark) ,最终导致日期没有解析处理(ps:这三个字节如何出现的,我也不知道)

如何解决

最终解决方法,把日期整行删掉,通过普通文本编辑器重新录入日期。

调试环境

操作系统: window 10 professional

调试工具: WebStorm 2019.1.1

hexo版本: 3.8.0

调试脚本

var hexo =  require("hexo/node_modules/hexo-cli/lib/hexo");
var blogPath="这里填写你的blog目录路径"
hexo(blogPath);

上述js需要在你的blog根目录下执行;

调试配置参数

参考链接

Wiki::Left-to-right_mark

解决URL出现%E2%80%8E(Zero-Width Space)