Skip to content
This repository has been archived by the owner on Feb 18, 2020. It is now read-only.

Failed to Show Image again using version 0.0.3 #32

Open
Mlearn opened this issue Aug 15, 2017 · 11 comments
Open

Failed to Show Image again using version 0.0.3 #32

Mlearn opened this issue Aug 15, 2017 · 11 comments

Comments

@Mlearn
Copy link

Mlearn commented Aug 15, 2017

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

@Mlearn
Copy link
Author

Mlearn commented Aug 15, 2017

附,我的hexo版本如下
image

@dayudodo
Copy link

dayudodo commented Feb 7, 2018

我也是一样的错误!

@nuynait
Copy link

nuynait commented Jul 2, 2018

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.

@xcodebuild
Copy link
Owner

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

@Mlearn
Copy link
Author

Mlearn commented Jun 4, 2019

@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 版本无法显示图片。

@xcodebuild
Copy link
Owner

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

@Mlearn
Copy link
Author

Mlearn commented Jun 4, 2019

@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' }

@xcodebuild
Copy link
Owner

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

image

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

@xcodebuild
Copy link
Owner

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

@rstyro
Copy link

rstyro commented Jun 6, 2019

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

'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();
    }
  }
});

@youyim
Copy link

youyim commented Jun 23, 2019

@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.

使用这个方法搞定了

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants