hexo-asset-image
hexo-asset-image copied to clipboard
Failed to Show Image again using version 0.0.3
#2 中所述问题在0.0.2版本中没有出现,更新到0.0.3版本之后,该问题又复现了。生成的图片地址中包含了双层的 Asset folder 路径。
附,我的hexo版本如下
我也是一样的错误!
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.
@Mlearn @dayudodo 请问有公开可复现的 repo 么,现在的 0.0.4 版本是否还会出现?
@xcodebuild 更新到 0.0.4 还是无法显示图片。查看网页如下:
0.0.2 版本:
0.0.4 版本:
0.0.2 版本下可以显示图片, 0.0.4 版本无法显示图片。
@Mlearn 可以提供一个最小复现么,我在你的 github 只看到部署后的文件
@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 非常感谢,我在 macOS 10.14.4 下下载你提供的复现代码后 hexo s
是没有问题的(即使我的文件夹在 finder 里都乱码了)
怀疑和 Windows 系统有关,等我晚上用 Windows 电脑排查看看
换了台电脑发现是我 publish 错了代码,试一下 1.0.0
😢
不知道为啥,反正用的是新版的就会出问题,所以我找了一下我以前的版本然后根据我的情况改了下。内容如下:
'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();
}
}
});
@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.
使用这个方法搞定了