maxchang3/hexo-markmap

出现错误,Unexpected end of JSON input

Closed this issue · 6 comments

md文件
image

渲染之后
image

提示此处json解析有错
image

image

之前遇到过类似问题,似乎和 hexo 版本或其他插件有关。烦请提供 hexo --version 相关信息。(如果方便的话能否提供一个最小可复现样例?)

这边提供下上图测试的信息(hexo init 后直接安装 hexo-markmap),如果 hexo 版本有差异,可以尝试升级一下 hexo 版本。

hexo: 6.2.0
hexo-cli: 4.3.0
os: darwin 21.4.0 12.3.1

hexo: 6.2.0
hexo-cli: 4.3.0
os: win32 10.0.19043

问题解决了,是返回值data=' 的单引号会被莫名其妙转成双引号,导致json无法解析,然后加了html编码就好了。
image

hexo: 6.2.0 hexo-cli: 4.3.0 os: win32 10.0.19043

问题解决了,是返回值data=' 的单引号会被莫名其妙转成双引号,导致json无法解析,然后加了html编码就好了。 image

啊,是这样的。但是同样的内容下有的解析就是正确的,有的却会出现你上述的情况。我还没找到具体的原因。不过这也算是一个解决方法 :) 之前我也试过转义但是好像出了些问题……所以这样修改后,解析是正常的吗? 可以的话我把他加到代码里。
htmlEncodeByRegExp 的实现是如下吗? 后面还需要 decode 吗?

function htmlEncodeByRegExp (str){ 
            var s = "";
            if(str.length == 0) return "";
            s = str.replace(/&/g,"&");
            s = s.replace(/</g, "<");
            s = s.replace(/>/g, ">");
            s = s.replace(/ /g, " ");
            s = s.replace(/\'/g, "'");
            s = s.replace(/\"/g, '"');
            return s; 
            }
function htmlEncodeByRegExp (str){  

         var s = "";

         if(str.length == 0) return "";

         s = str.replace(/&/g,"&amp;");

         s = s.replace(/</g,"&lt;");

         s = s.replace(/>/g,"&gt;");

         s = s.replace(/ /g,"&nbsp;");

          s = s.replace(/\'/g,"&#39;");

         s = s.replace(/\"/g,"&quot;");

           return s;  

}

这样修改以后可以正常显示了,后续不需要decode

function htmlEncodeByRegExp (str){  

         var s = "";

         if(str.length == 0) return "";

         s = str.replace(/&/g,"&amp;");

         s = s.replace(/</g,"&lt;");

         s = s.replace(/>/g,"&gt;");

         s = s.replace(/ /g,"&nbsp;");

          s = s.replace(/\'/g,"&#39;");

         s = s.replace(/\"/g,"&quot;");

           return s;  

}

这样修改以后可以正常显示了,后续不需要decode

好的,感谢,我会尽快处理!~