xaoxuu / hexo-theme-stellar

内置文档系统的简约商务风Hexo主题,支持大量的标签组件和动态数据组件。
https://xaoxuu.com/wiki/stellar/
MIT License
1.21k stars 306 forks source link

Stellar 主题创建专栏出错 #397

Closed sakurasep closed 4 months ago

sakurasep commented 4 months ago

检查清单

问题描述

你好,我在部署专栏的时候遇到了这一个问题

FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
TypeError: Cannot create property 'id' on string 'Buaservemediaserver.ymlIlocblob�.������
         zerotech.ymlIlocblobA0������
                                     @� @ @ @
                                             E�DSDB  @ @ @'
    at getTopicTree (/Users/sakurasep/文件/Blog/Sakura_Blog/themes/stellar/scripts/events/lib/topic_tree.js:19:14)
    at module.exports (/Users/sakurasep/文件/Blog/Sakura_Blog/themes/stellar/scripts/events/lib/topic_tree.js:39:16)
    at Hexo.<anonymous> (/Users/sakurasep/文件/Blog/Sakura_Blog/themes/stellar/scripts/events/index.js:11:30)
    at Hexo.emit (node:events:525:35)
    at Hexo._generate (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/hexo/lib/hexo/index.js:453:10)
    at /Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/hexo/lib/hexo/index.js:324:19
    at tryCatcher (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:673:18)
    at PromiseArray._resolve (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise_array.js:127:19)
    at PromiseArray._promiseFulfilled (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise_array.js:145:14)
    at Promise._settlePromise (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:609:26)
    at Promise._settlePromise0 (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:673:18)
    at Promise._settlePromise (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:617:21)
    at Promise._settlePromise0 (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:673:18)
    at MappingPromiseArray.PromiseArray._resolve (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise_array.js:127:19)
    at MappingPromiseArray.init (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise_array.js:75:18)
    at Promise._settlePromise (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:601:21)
    at Promise._settlePromise0 (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/Users/sakurasep/文件/Blog/Sakura_Blog/node_modules/bluebird/js/release/promise.js:673:18)

我下载官方 demo 后,将我的博客中的_data/topic 中的配置文件放入后可以正常创建专栏 我的博客的_data结构如下图

image

现在的情况是如果我不使用专栏整个博客可以正常部署,使用专栏就会报错

xaoxuu commented 4 months ago
Buaservemediaserver.ymlIlocblob�.������
         zerotech.ymlIlocblobA0������
                                     @� @ @ @
                                             E�DSDB  @ @ @

这个是啥?乱码了吧

Buaservemediaserver 看,应该是有个地方的缩进有问题导致识别出错了,把后面一大串都当做前面某个东西的值了。

sakurasep commented 4 months ago
Buaservemediaserver.ymlIlocblob�.������
         zerotech.ymlIlocblobA0������
                                     @� @ @ @
                                             E�DSDB  @ @ @

这个是啥?乱码了吧

Buaservemediaserver 看,应该是有个地方的缩进有问题导致识别出错了,把后面一大串都当做前面某个东西的值了。

我也不太清楚是哪里的缩进出了问题,主题文件我是没有碰过。。我再查一下吧。 我是在 macOS 上部署的博客,这个乱码我看看有啥办法显示。

sakurasep commented 4 months ago

我这边怀疑是 macOS 的问题 我刚才做了一个测试,在一个新的文件夹用 hexo init 初始化了一个 hexo,然后用 npm 安装 stellar 博客,这相当于创建了一个全新的环境。 然后我第一次把主题 demo 的 _data/topic 直接拷贝到 source 中,然后部署后发现没有问题,能正常显示专栏

image

然后我拷贝 demo 中的 aaa.yml 分别改成 bbb.yml ccc.yml 仍然没有出错 第二次是自己创建_data/topic, 然后手动复制 demo 中的文件到 topic中 ,此时就报错了

image
xaoxuu commented 4 months ago

检查过md文件吗

sakurasep commented 4 months ago

测了一段时间,好像是 macOS 的问题? 我在 windows 上创建了一个同样的环境,无论怎么增加或者改变 topic 内的文件,都可以成功编译

image

macOS 如果要不报错,只有一种方法,就是一个全新的文件夹,只要你创建了 topic,并且成功的编译了此文件一次,后续就不可以删除这个 topic 以及新建文件删除文件了

sakurasep commented 4 months ago

应该确定了是 macOS 的问题了,同样的一份代码

本地 macOS

image

GitHub Action

image

很无语,想不出来哪里的问题

L33Z22L11 commented 4 months ago

请尝试在此项目停用 npm 的 package-lock 机制,删除 node_modules/ 文件夹后重新执行 npm install

sakurasep commented 4 months ago

请尝试在此项目停用 npm 的 package-lock 机制,删除 node_modules/ 文件夹后重新执行 npm install

你好 尝试后仍然有问题,需要我的博客源码或者说需要什么log 文件呢

xaoxuu commented 4 months ago

贴一下所有包含mediaserver这个topic的md文件的front-matter

sakurasep commented 4 months ago

目前还没有任何 md 文件使用这个 topic,我现在相当于是测试,改了好几次文件名都会出错

xaoxuu commented 4 months ago

试一下在根目录配置文件 _config.yml 中找到 ignore: 并修改为:

ignore:
  - .DS_Store
  - /**/.DS_Store
sakurasep commented 4 months ago
  - .DS_Store
  - /**/.DS_Store

试了之后经过简单测试已经解决,原来是这里的问题。

xaoxuu commented 4 months ago

那我在主题里过滤一下这个文件