个人博客的内容是放在github上,用vercel部署的。
现在是北京时间2021年5月3日 凌晨两点,几十分钟前我写完了一篇博客,传到github上的文件日期写的是5.3日,但见了鬼了邮件都通知我成功部署了,页面内容上却没更新。
我躺被窝想了一会,有没有可能是刚好刚才美国时间还是5.2日,所以那篇博客显示不出来呢?于是我把文件日期改成5.2日重新传,就能正常显示了。

    yuanfan 为了避免这种怪事,编译网站的 hugo 命令行要加上 -F 参数,F 表示 future。Hugo 默认不编译两类页面,一类是草稿(YAML 数据中含有 draft: true 字段的文件),另一类就是日期在当前系统日期之后的文件。因为你的时区在美国时间之前,所以你的 5 月 3 日确实有大约半天对应美国的 5 月 2 日,于是这种日志默认不会编出来。加上 -F 参数就是告诉 Hugo,甭管日志的日期,通通给我编出来。

    日期在未来的日志之所以默认不编出来,可能是为了对付那种八点二十发的情况。

      yihui
      明白了,谢谢益辉,难怪我每次写完博客评论上面的发送时间都是in the future。

      果然有人也碰到相同问题了,前几个月在这个诡异的问题上整整浪费了我一个晚上的时间……

        InfinityLoop 我发现你好像已经几次因为某个问题浪费一晚上时间了,而且这些问题都是 blogdown::check_site() 可以很快帮你指出来的,所以下次记住这个口号:https://bookdown.org/yihui/blogdown/a-quick-example.html#when-in-doubt-run-blogdowncheck_site

        blogdown::check_site() 会查找日期在未来的文章:https://github.com/rstudio/blogdown/blob/20a8258b39f5cbda7911cc8c0cdb35a4bb31aa52/R/check.R#L339-L352 不过在这个具体问题上,因为日期不带时区,所以 check_site() 也无法聪明到可以预知服务器上的时区,也检测不出来这种问题。

        我得想想怎么解决。你们平时怎样创建新的文章?如果用 RStudio 插件 New Post 的话,那还有希望在日期字段里自动加上时区;如果是手打日期的话,那这问题就几乎无望了。

          yihui 我都是用 New Post 创建文章的。

          能不能设置个默认时区呢?感觉每篇文章的日期都写时区不太简洁,一般人应该平时都在同一个时区生活吧。都是一样的东西,应该有个设置好点吧。


          我第一次知道文章写完就发布还有这种问题。我写完文章都要修订好几次,不会遇到这种问题。没空检查文章的时候,我能把文章屯一个月。我写文章的流程一般是这样的:

          1. 尽量一口气写完
          2. 过两三天再逐字修订
          3. 再过两三天再看,没问题就可以发布了

          刚写完的时候一般感觉不错,这时候检查效果不太好。把文章放着,过两三天再逐字地看,就会发现些问题,然后改正。我觉得迟一天发布也不是坏事。

          yihui

          谢谢! blogdown 可用选项太多了,帮助文档也非常丰富,估计有不少和我一样不看帮助文档直接开用,碰到问题才一个一个去查的人,所以对很多操作或者 trick 没有了解得非常透彻,就会导致一直在浪费时间


          我创建文章都是习惯手动复制老文章的设定来写的,因为有不少主题的自定义字段,所以复制粘贴对于我来说更便捷。

            11 天 后

            yihui 多谢分享,简化模板之后果然不用每次新建文章都删删删了。但有个问题,没填写的内容被包含进去了

            我的模板是这样的:

            ---
            title: "{{ replace .TranslationBaseName "-" " " | title }}"
            date: {{ .Date }}
            tags: []
            ---
            
            <!--more-->

            用 New Post 新建文章,什么都不填,直接点确定,会产生:

            ---
            title: ''
            author: ''
            date: '2021-05-17'
            slug: .zh-cn
            categories: []
            tags: []
            ---
            
            <!--more-->

            Screenshot_20210517_082800.png

            author、categories 都没填,但是还是出现在文章里了。要是不要包含进去就更好了,我觉得填了再包含会方便点。

              4 个月 后

              yuanfan 刚在 blogdown 里加了个时间选项。若你在 .Rprofile 中设置 options(blogdown.time = TRUE),那么用 RStudio 插件 New Post 创建日志时,日期字段里就会自动带上时间,形如 2001-02-03T04:05:06-0700。因为这里面带上了时区,所以日期就没有了模糊性;无论服务器上的时间在哪个时区,都可以准确解析这个日期。

              当然,你也可以手动在日期中添加上时间,北京时间的时区是 +0800

              最简单的办法还是我最早说的,在 hugo 命令行里添加 -F 选项,命令 hugo 编译任何日期的日志,不管它是不是未来的日期。

                yihui 哇嗷,谢谢。跑偏一下:朝露暮成霜,过去将会来。

                  yuanfan 不客气。历届跑偏大赛中我有输过吗。没有。

                  《观一个好不容易加上的时区与一则永远对不完的对联有感》

                  朝露暮成霜,
                  过去将会来。
                  来联去入箱,
                  夙愿今释怀。

                  InfinityLoop 我也试花了两个晚上折腾,后来才发现是因为日期是未来日期,所以 hugo 默认不编译。 后来在 netlify.toml 里加上下面的一行就好了

                  [context.production]
                    command = "hugo --buildFuture"
                  10 个月 后

                  前些天也踩了这个坑,发现 Hugo 本来就可以配置编译参数。在 Hugo 配置文件 config.toml 加上 buildFuture = true 就行了。

                  1 年 后
                  CyrusYip 更改标题为「blogdown 部署后帖子未出现在网站