Candinya / Kratos-Rebirth

一个可爱而现代的 Hexo 主题
GNU General Public License v3.0
630 stars 80 forks source link

Bug 回报:site_analytics填入CloudFlare Analytics的统计代码后生成报错 #103

Closed lijiakaijun closed 2 years ago

lijiakaijun commented 2 years ago
  1. 对Bug的描述: 在主题配置中的site_analytics填入CloudFlare Analytics的统计代码后生成报错

  2. 复现Bug的方法: 在CloudFlare中的”数据分析“选项卡找到Web Analytics后添加一个站点并获取统计代码(域名没通过cf代理的就行(恼 在主题配置中的site_analytics填入获取到的的统计代码 保存,hexo g,报错 end

  3. 期望的行为: 正常生成文件

  4. 相关的截图: image

  5. 运行环境(如果该Bug的产生和环境有关,例如浏览器不兼容导致):

  6. 您的配置文件:

    site_analytics:  <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "f7e91cb847eb445c9d6804fae5889cb6"}'></script><!-- End Cloudflare Web Analytics -->
  7. 补充内容: 当时在翻阅cf的文档时找到了另外一种写法

    <script defer src='https://static.cloudflareinsights.com/beacon.min.js?token=$SITE_TOKEN'></script>

    按照这个写法重新填写后可以正常生成,模拟下访问发现也可以正常统计

10号发现的问题,现在才提issues,问就是忘记了,咕咕咕 应该算是个bug吧😂,毕竟能导致生成错误,但解决方法又非常简单(雾)

Candinya commented 2 years ago

把这一行用单引号引用起来试一试呢,这个是 yaml 解析器报的错误,也就是设置成这样:

site_analytics:  '<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "f7e91cb847eb445c9d6804fae5889cb6"}'></script><!-- End Cloudflare Web Analytics -->'
Candinya commented 2 years ago

把这一行用单引号引用起来试一试呢,这个是 yaml 解析器报的错误,也就是设置成这样:

(这样,删掉中间冒号后面的空格

site_analytics: <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token":"f7e91cb847eb445c9d6804fae5889cb6"}'></script><!-- End Cloudflare Web Analytics -->
lijiakaijun commented 2 years ago

把这一行用单引号引用起来试一试呢,这个是 yaml 解析器报的错误,也就是设置成这样:

(这样,删掉中间冒号后面的空格

site_analytics: <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token":"f7e91cb847eb445c9d6804fae5889cb6"}'></script><!-- End Cloudflare Web Analytics -->

已改,也正常生成

Candinya commented 2 years ago

🎉 这个并不是主题的问题,而是 YAML 的语法规范,因为使用 : 分隔键名和键值,所以当键值里出现同样的 : 分隔符时就会出现错误,花括号在 YAML 里也是特殊符号,所以触发了无法解析的问题; 对于字符串类型,使用单引号或是双引号包括起来一般能正确解析,但由于这行代码里已经包含了单双引号,所以目前可能只有删去字符串中冒号后的空格作为比较有效的解决方案。