最近在研究Angular4,将Mac上的node和npm都升级为了最新版本,当使用hexo的时候发现报错,当即决定将hexo也升级最新版本。
升级完hexo,将所有的博客迁移过来,执行hexo g,hexo s,很顺利,没有任何问题,马上执行hexo d发布到服务器,发现页面显示如下图:

查看本地环境的public目录,发现生成的html页面的代码就如上图,但本地运行又是正常的。一个直接的反应就是,上面的代码是在运行时依赖node解析成html页面的。
ssh到vps上查看node版本,发现很低,一通折腾升级node版本,最终将vps上node和npm版本升级到和本地环境一致,发现网站依然不能正常运行。
尝试将本地public目录中的文件删掉,发现本地环境依然正常运行,这时才恍然大悟,本地执行hexo s,并不是执行的public目录中的内容,而是动态编译运行的。
重新hexo init hblog,安装步骤重新来了一个,执行hexo g 发现public目录中生成的html已经正常,hexo d发布到服务器,一切OK。
总结
- 对执行原理的不了解,导致走了很多弯路,瞎折腾了翻
- hexo本地运行并不是运行的public中的内容
- 服务器端无需安装node,也可以运行hexo
- 至今还不知道开始生成的html不正确是什么原因导致