hexo-asset-image icon indicating copy to clipboard operation
hexo-asset-image copied to clipboard

Failed to Show Image again using version 0.0.3

Open Mlearn opened this issue 7 years ago • 11 comments

#2 中所述问题在0.0.2版本中没有出现,更新到0.0.3版本之后,该问题又复现了。生成的图片地址中包含了双层的 Asset folder 路径。

Mlearn avatar Aug 15 '17 14:08 Mlearn

附,我的hexo版本如下 image

Mlearn avatar Aug 15 '17 15:08 Mlearn

我也是一样的错误!

dayudodo avatar Feb 07 '18 10:02 dayudodo

Me too. I have to rollback to v0.0.2 to make it work.

npm install [email protected] --save

The problem is if the blog post is hello-world.md, then image path generated using v0.0.3 will be /2018/07/02/hello-world/hello-world/img.jpg. The expected path is /2018/07/02/hello-world/img.jpg

Thanks.

nuynait avatar Jul 02 '18 18:07 nuynait

@Mlearn @dayudodo 请问有公开可复现的 repo 么,现在的 0.0.4 版本是否还会出现?

xcodebuild avatar Jun 02 '19 09:06 xcodebuild

@xcodebuild 更新到 0.0.4 还是无法显示图片。查看网页如下:

0.0.2 版本: Snipaste_2019-06-04_15-58-35

0.0.4 版本: Snipaste_2019-06-04_15-58-13

0.0.2 版本下可以显示图片, 0.0.4 版本无法显示图片。

Mlearn avatar Jun 04 '19 08:06 Mlearn

@Mlearn 可以提供一个最小复现么,我在你的 github 只看到部署后的文件

xcodebuild avatar Jun 04 '19 09:06 xcodebuild

@xcodebuild

链接: https://pan.baidu.com/s/1l3y7m4nmBt30oFVkwYBW1Q 提取码: wd6m

PS D:\Users\AM\Hexo_Blog_test> nvm list

  * 11.0.0 (Currently using 64-bit executable)
    10.12.0
PS D:\Users\AM\Hexo_Blog_test> npm version
{ 'hexo-site': '0.0.0',
  npm: '6.4.1',
  ares: '1.14.0',
  cldr: '33.1',
  http_parser: '2.8.0',
  icu: '62.1',
  modules: '67',
  napi: '3',
  nghttp2: '1.34.0',
  node: '11.0.0',
  openssl: '1.1.0i \n',
  tz: '2018e',
  unicode: '11.0',
  uv: '1.23.2',
  v8: '7.0.276.28-node.5',
  zlib: '1.2.11' }

Mlearn avatar Jun 04 '19 11:06 Mlearn

@Mlearn 非常感谢,我在 macOS 10.14.4 下下载你提供的复现代码后 hexo s 是没有问题的(即使我的文件夹在 finder 里都乱码了)

image

怀疑和 Windows 系统有关,等我晚上用 Windows 电脑排查看看

xcodebuild avatar Jun 05 '19 02:06 xcodebuild

换了台电脑发现是我 publish 错了代码,试一下 1.0.0 😢

xcodebuild avatar Jun 05 '19 14:06 xcodebuild

不知道为啥,反正用的是新版的就会出问题,所以我找了一下我以前的版本然后根据我的情况改了下。内容如下:

'use strict';
var cheerio = require('cheerio');

// http://stackoverflow.com/questions/14480345/how-to-get-the-nth-occurrence-in-a-string
function getPosition(str, m, i) {
  return str.split(m, i).join(m).length;
}

hexo.extend.filter.register('after_post_render', function(data){
  var config = hexo.config;
  if(config.post_asset_folder){
	var isIndex =false;
    var link = data.permalink;
	if(/.*\/index\.html$/.test(link)) {
      isIndex=true;
    }
	var beginPos = getPosition(link, '/', 3) + 1;
	// In hexo 3.1.1, the permalink of "about" page is like ".../about/index.html".
	var endPos = link.lastIndexOf('/') + 1;
    link = link.substring(beginPos, endPos);
	if(!isIndex) {
		 link= link.substr(0,link.lastIndexOf('/'));
		 link= link.substr(0,link.lastIndexOf('/')+1);
    }

    var toprocess = ['excerpt', 'more', 'content'];
    for(var i = 0; i < toprocess.length; i++){
      var key = toprocess[i];
 
      var $ = cheerio.load(data[key], {
        ignoreWhitespace: false,
        xmlMode: false,
        lowerCaseTags: false,
        decodeEntities: false
      });

      $('img').each(function(){
		// For windows style path, we replace '\' to '/'.
        var src = $(this).attr('src').replace('\\', '/');
        if(!/http[s]*.*|\/\/.*/.test(src)){
		  // For "about" page, the first part of "src" can't be removed.
		  // In addition, to support multi-level local directory.
		  var linkArray = link.split('/').filter(function(elem){
		    return elem != '';
		  });
		  var srcArray = src.split('/').filter(function(elem){
		    return elem != '';
		  });
		  if(linkArray[linkArray.length - 1] == srcArray[0])
		    srcArray.shift();
          src = srcArray.join('/');
          $(this).attr('src', '/' + link + src);
        }
      });
      data[key] = $.html();
    }
  }
});

rstyro avatar Jun 06 '19 13:06 rstyro

@Mlearn @dayudodo 请问有公开可复现的 repo 么,现在的 0.0.4 版本是否还会出现?

Me too. I have to rollback to v0.0.2 to make it work.

npm install [email protected] --save

The problem is if the blog post is hello-world.md, then image path generated using v0.0.3 will be /2018/07/02/hello-world/hello-world/img.jpg. The expected path is /2018/07/02/hello-world/img.jpg

Thanks.

使用这个方法搞定了

youyim avatar Jun 23 '19 01:06 youyim